当前位置: 代码迷 >> Java Web开发 >> Java中使用urlrewrite实现URL的重写
  详细解决方案

Java中使用urlrewrite实现URL的重写

热度:1820   发布时间:2014-02-26 20:21:31.0

1.下载urlrewrite,官方下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip

2.解压缩文件,压缩包内文件copy到项目中(压缩包位置 -> 项目位置):

urlrewrite-2.6.0-src/webapp/WEB-INF/lib/urlrewrite-2.6.0.jar -> WebRoot/WEB-INF/lib/urlrewrite-2.6.0.jar

urlrewrite-2.6.0-src/webapp/WEB-INF/urlrewrite.xml -> WebRoot/WEB-INF/urlrewrite.xml

3.修改urlrewrite.xml

Xml代码 复制代码
  1. <?xmlversion="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.  

  5. <!--  

  6.  

  7. Configuration file for UrlRewriteFilter  

  8. http://tuckey.org/urlrewrite/  

  9.  

  10. -->  

  11. <urlrewrite>  

  12.    <rule>  

  13.        <from>^/([a-z]+)$</from>  

  14.        <totype= "forward">/world.jsp?id=$1</to>  

  15.    </rule>  

  16.    <rule>  

  17.        <from>^/world/(.*)$</from>  

  18.        <to>/world.jsp?tid=$1</to>  

  19.    </rule>  

  20.    <rule>  

  21.        <from>^/(.*).html$</from>  

  22.        <to>/test1/$1.jsp</to>  

  23.    </rule>  

  24.      

  25.    <outbound-rule>  

  26.        <note>  

  27.         The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)  

  28.         the url /rewrite-status will be rewritten to /test/status/.  

  29.          

  30.         The above rule and this outbound-rule means that end users should never see the  

  31.         url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks  

  32.         in your pages.  

  33.        </note>  

  34.        <from>/rewrite-status</from>  

  35.        <to>/test/status/</to>  

  36.    </outbound-rule>  

  37. </urlrewrite>  


4.将以下代码添加到web.xml里

Xml代码 复制代码
  1. <filter>  

  2.        <filter-name>UrlRewriteFilter</filter-name>  

  3.        <filter-class>  

  4.             org.tuckey.web.filters.urlrewrite.UrlRewriteFilter  

  5.        </filter-class>  

  6.    </filter>  

  7.    <filter-mapping>  

  8.        <filter-name>UrlRewriteFilter</filter-name>  

  9.        <url-pattern>/*</url-pattern>  

  10.    </filter-mapping>  



rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.
好了,在项目中新建world.jsp,启动tomcat,输入
http://localhost:8080/mysite/world/1

mysite是你的项目名

实际上访问的是http://localhost:8080/mysite/world.jsp?tid=1
这样就简单的实现了伪静态的效果

  相关解决方案