`

(转载)页面静态化(JSP动态页面转静态化)

    博客分类:
  • Java
阅读更多

本文来自:http://springkingster.javaeye.com/blog/175114

页面静态化(JSP动态页面转静态化)

urlrewritefilter 下载: http://tuckey.org/urlrewrite/#download

所用基于动态的url http://www.nihaoblog.com/content.jsp?id=1&contentid=404按照各大搜索引擎的喜好,应该美化成http://www.nihaoblog.com/content/1_404.html静 态网页的方式,尽管目前的google及几大搜索引擎宣称支持动态页网的抓取,但与传统的html文件相比较抓取率仍不在一个数量级。Apche的 mod_rewrite模块具有此功能,但是对于租用虚拟主机的用户来说就比较麻烦不太可能对所有运营商有更多的要求,需要条件依赖就不具通用性。

    目前有一个解决方法,通过UrlRewriteFilter可以完全实现动态URL表态化,你可以将它直接应用到你的web应用中,不管你用的是jsp+javabean还是struts. 
    
下面是使用方法:
    1、下载http://tuckey.org/urlrewrite/#download目前版本是1.2,解压缩后将文件考到相应的web-inf/lib和web-inf下,。 
     2、配置web.xml
xml 代码
  1. <filter>   
  2.        <filter-name>UrlRewriteFilter</filter-name>   
  3.        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>   
  4. </filter>   
  5. <filter-mapping>   
  6.        <filter-name>UrlRewriteFilter</filter-name>   
  7.        <url-pattern>/*</url-pattern>   
  8. </filter-mapping>  
根据自己的需要,将相应目录下的url转给UrlRewriteFilter来处理。 
   3、配置urlwrite规则文件WEB-INF/urlrewrite.xml
配置如下:
  1. <rule>   
  2.     <from>/content/([0-9]+)_([0-9]+).html</from>   
  3.     <to>/content.jsp?id=$1&amp;contentid=$2</to>   
  4. </rule>  
xml 代码
    
注意:有多个参数时,中的连接符号&应该是&
熟悉正则表达式的朋友可能一看就是明白rule的匹配原理了。更多的配置可以参照http://tuckey.org/urlrewrite/manual/

每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号、'&'号查询串等构成的一个长长的的url。很urgly。

一般的url----------------------------------------------------------较好的url 
http://www.xxx.net/user/profile.do?id=20001 ====> http://www.xxx.net/user/20001 
http://www.xxx.net/forum/board.do?name=java ====> http://www.xxx.net/forum/java 
http://www.xxx.net/forum/thread.do?id=29923 ====> http://www.xxx.net/thread/29923

后者明显较为直观和漂亮。

使用url rewrite可以很好的改善这个状况。网站url rewrite应用是非常广泛的,良好的url设计给用户带来的非常好的体验,同时也能吸引搜索引擎的注意。

一 种rewrite称为一个规则,上面的例子就是3个规则。rewrite技术可以在代理服务器实现,或者可以在tomcat之类的java web服务器实现。 Apache HTTP Server 2.x 和 mod_proxy提供了不错的Rewrite处理方法。so如果使用apache,则直接在apache中配置Rewrite即可。但是对于没有使用代 理,或者不完全要在代理服务器配置Rewrite的web应用,通过第三方Jar包也是可以实现很perfect的rewrite技术的。这是本帖的着重 点。

这个第三方包的地址是:http://tuckey.org/urlrewrite/ (待会再去这个网站,现在先别去)

这个包使用正则表达式仿照了apache rewrite的做法。而实现原理也是很明晰的:filter,forward,redirect机制组合:

在 web.xml配置一个UrlRewriteFilter,拦截所有进来的请求,对服务要求的请求进行rewrite。比如,对 http://www.xxx.net/user/([0-9]+)请求,forward到/profile.do?id=$1。这就是一条规则。在这个 第三方包中的规则文件urlrewrite.xml中可以这样定义:

代码
  1. <rule>  
  2.     <from>^/user/([0-9]+)/?$from>  
  3.     <totype="forward">/profile.do?id=$1to>  
  4. <rule>  
<script>render_code();</script>

对我来说,一般我会配置一个通用的rule,使所有没有包含"."的url forward到.do的action上来(本人使用strut做系统较多)

代码
  1. <rule>  
  2.     <note>  
  3.          - 这是一个通用请求url rewrite   
  4.          - 将请求forword url加上“.do”的处理器上。   
  5.          - 例:   
  6.          -    请求 http://{domain}/user/login     将被forward到 http://{domain}/user/login.do   
  7.          -    请求 http://{domain}/user/login/    将被forward到 http://{domain}/user/login.do   
  8.          -    请求 http://{domain}/user/logout/   将被forward到 http://{domain}/user/logout.do   
  9.     note>  
  10.     <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
  11.     <totype="forward">/$1.doto>  
  12. <rule>  
<script>render_code();</script>

上面只是介绍个大概,并不是urlrewriter这个jar包的使用指南。如果你觉得这种rewrite做法不错的话,不如直接访问这个网站吧 http://tuckey.org/urlrewrite/

第一步:从http://tuckey.org/urlrewrite/ 上下载urlrewrite-3.0.3.jar包,放到webapp classpath下

第二步:在web.xml配置UrlRewriteFilter:

代码
  1. <filter>  
  2.     <filter-name>UrlRewriteFilterfilter-name>  
  3.     <filter-class>  
  4.          org.tuckey.web.filters.urlrewrite.UrlRewriteFilter   
  5.     filter-class>  
  6.     <init-param>  
  7.         <param-name>logLevelparam-name>  
  8.         <param-value>WARNparam-value>  
  9.     init-param>  
  10. filter>  
  11. <filter-mapping>  
  12.     <filter-name>UrlRewriteFilterfilter-name>  
  13.     <url-pattern>/*url-pattern>  
  14. filter-mapping>  

<script>render_code();</script>

第三步:在web-inf下新建urlrewrite.xml文件,简单填入以下内容:

代码
  1. <!--sp-->xmlversion="1.0"encoding="utf-8"?>  
  2.      "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">  
  3.   
  4. <urlrewrite>  
  5.     <rule>  
  6.         <note>  
  7.              - 这是一个通用请求url rewrite   
  8.              - 将请求forword url加上“.do”的处理器上。   
  9.              - 例:   
  10.              -    请求 http://{domain}/user/login     将被forward到 http://{domain}/user/login.do   
  11.              -    请求 http://{domain}/user/login/    将被forward到 http://{domain}/user/login.do   
  12.              -    请求 http://{domain}/user/logout/   将被forward到 http://{domain}/user/logout.do   
  13.         note>  
  14.         <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
  15.         <totype="forward">/$1.doto>  
  16.     rule>  
  17.   
  18. urlrewrite>  

<script>render_code();</script>

第四步:启动web应用,将原来需要.do的请求改为去掉.do后请求,看看结果。

第五步:更详细的规则定义,请看http://tuckey.org/urlrewrite/manual/3.0/

分享到:
评论

相关推荐

    动态Jsp页面转换成静态Html页面

    动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html...

    java JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip

    Java JSP页面静态化是一种常见的优化技术,其主要目的是通过将动态内容转化为静态HTML页面,以减少对数据库的访问次数,提高网站的响应速度和用户体验。以下是对这一主题的详细阐述: 1. **JSP页面静态化原理**: ...

    jsp静态化,jsp静态化

    **正文** ...总之,JSP静态化是提升网站性能的有效手段,它结合了动态内容的灵活性和静态页面的高效性。通过合理选用和配置静态化方案,可以显著改善用户体验,减轻服务器压力,同时有利于SEO优化。

    jsp的页面静态化技术,很实用

    **JSP页面静态化技术详解** 在Web开发中,JavaServer Pages(JSP)是一种常见的动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,在高流量的网站中,为了提高性能和降低...

    动态JSP页面静态化,html输出

    在Web开发领域,动态JSP页面静态化是一种常见的优化策略,其主要目的是提高网站的性能和用户体验。这一过程涉及到将原本由服务器动态生成的JSP页面转换为纯HTML页面,从而减少服务器处理请求的压力,加快页面加载...

    jsp页面静态化

    **JSP页面静态化**是一种优化网站性能的技术,它的核心思想是将动态生成的HTML页面保存为静态文件,以便后续的访问可以直接返回静态页面,从而减少服务器资源的消耗,提高响应速度。 在Web应用程序中,动态页面是...

    jsp动态页面转化静态化--实例

    三、MyEclipse实现JSP静态化步骤 1. 创建JSP项目:在MyEclipse中新建一个Java Web项目,包含必要的Web-INF目录和JSP文件。 2. 编写JSP页面:编写你需要静态化的JSP页面,确保其功能正常。 3. 实现静态化逻辑:在...

    页面静态化实例,jsp转化成html

    3. **静态页面生成**:静态化过程中,我们需要在用户请求之前,或者在后台定期执行,将`index.jsp`的动态内容转换为HTML文件,例如生成`index.html`。这通常通过读取JSP,执行其中的Java代码,然后将结果写入HTML...

    有关Java页面静态化

    Java页面静态化是一种提高Web应用性能的技术,它通过将动态生成的HTML页面转换为静态HTML文件,从而减少了服务器处理请求的负担,加快了用户访问速度。这种技术在高并发、大数据量的网站中尤其重要,因为它能显著...

    JSP页面静态化最普遍用的三种

    在IT行业中,JSP页面静态化是一种常见的优化技术,它将动态生成的JSP页面转换为静态的HTML页面,以提高网站的加载速度和搜索引擎的友好性。以下是JSP页面静态化最常用的三种方法的详细解释: 1. 模板替换法 这种...

    动态页面静态化汇总--页面静态化方案

    动态页面静态化是一种提高网站性能和搜索引擎友好度的技术手段,主要通过将原本由服务器动态生成的HTML页面转换为预先生成的静态HTML文件。这样,用户请求时,服务器无需执行数据库查询和其他复杂操作,而是直接返回...

    jsp静态化和伪静态化

    **伪静态化**则是在不改变动态页面本质的情况下,通过URL重写技术使动态URL看起来像是静态的,以达到优化搜索引擎收录和用户体验的目的。例如,原本的动态URL可能是`http://example.com/article.php?id=123`,伪静态...

    java 页面静态化

    在进行页面静态化时,我们还需要考虑一些问题,比如如何处理动态内容(如用户登录状态、个性化推荐)、如何同步静态文件和动态数据、以及如何清理过期的静态文件等。这些问题可以通过设计合理的缓存策略和定时任务来...

    JSP页面静态化

    包括使用freemarker和velocity两种技术来实现静态化。压缩包里面的文件有说明文档,说得很仔细,特别适合入门级别的人参考。还有freemarker和velocity开发所需要的jar包和插件。

    页面静态化

    在Java Web开发中,页面静态化通常涉及到将动态生成的HTML页面转化为纯HTML文件,以便用户请求时无需通过服务器执行复杂的脚本逻辑,直接由Web服务器发送静态页面,从而减少服务器负载并加快页面加载速度。...

    Jsp页面静态化(freemarker)教程及源码

    前台页面的静态化就有利于SEO,所以这个问题摆在了我的面前,在网上一搜,关于这方面的资料不是很多,又很杂,关于这方面的知识,越来或多的程序员将会碰到,原来项目中这部分静态化的功能主要由我来做的,现在我将...

    JSP中把动态页面转换为静态页面.doc

    总的来说,通过Filter和WrappedResponse实现的动态页面转静态页面是一种有效的优化策略,尤其适用于那些内容相对固定且访问频繁的页面。但需谨慎评估其适用性,确保不会影响到需要动态交互或个性化展示的场景。

    JSP生成静态页面

    总的来说,JSP生成静态页面是提高网站效率的有效手段,但同时也需要谨慎处理静态化过程中的各种细节,以确保网站的正常运行和用户体验。在实际项目中,应结合具体需求和资源来选择合适的静态化策略。

Global site tag (gtag.js) - Google Analytics