使用UrlRewrite实现url伪静态化

时间:2022-05-29 13:13:29

UrlRewrite

   A Java Web Filter for any compliant web application servers (such as Tomcat,JBossJetty or Resin), which allows you to rewrite URLs before they get to your code. It is a very powerful tool just like Apache's mod_rewrite.

    使用UrlRewrite有三大好处:

    一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的 话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多      二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL 
    三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息 
    

    UrlRewrite的用法:

    1. 首先下载jar包。从官网http://tuckey.org/urlrewrite/上下载下来urlrewrite-3.2.0.jar(本人使用的版 本,但不是最新版本,建议使用最新版本)。然后把jar包放到你的web项目的WEB-INF/lib下面。     2. 配置web.xml。 它的配置如下: [html] view plain copy
  1. <filter>  
  2.     <filter-name>UrlRewriteFilter</filter-name>  
  3.     <filter-class>org.tuckey.web.filters.urlrewriter.UrlRewriteFilter</filter-class>  
  4.     <init-param>  
  5.         <param-name>logLevel</param-name>  
  6.         <param-value>WARN</param-value>  
  7.     </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.     <filter-name>UrlRewriteFilter</filter-name>  
  11.     <url-pattern>/*</url-pattern>  
  12.     <dispatcher>REQUEST</dispatcher>  
  13.     <dispatcher>FORWARD</dispatcher>  
  14. </filter-mapping>  


    3. 在WEB-INF下面新建urlrewrite.xml(注意都是小写)。其配置如下: [html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"  
  3. "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">  
  4. <urlrewrite>  
  5.     <rule>  
  6.         <from>^/(.*)$</from>  
  7.         <to type="redirect">/$1.jsp</to>  
  8.     </rule>  
  9.     <outbound-rule>  
  10.         <from></from>  
  11.         <to></to>  
  12.     </outbound-rule>  
  13. </urlrewrite>  

         rule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转,具体配置可见官网文档。
例如下面的配置: [html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"  
  3.         "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">  
  4. <urlrewrite>  
  5.     <rule>  
  6.         <from>^/page/(.*)$</from>  
  7.         <to type="redirect">/page/$1.action</to>  
  8.     </rule>  
  9. </urlrewrite>  
  10.    
  11. 这样在浏览器中输入此url:http://localhost:8080/page/test  
  12. 就相当于访问:http://localhost:8080/page/test.jsp