urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,我觉得这样有如下好处:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,而且在出错情况下可以进行较好的处理提示
二:美化URL,去除了那些比如*.action之类的后缀名以及长长的参数串等,可以精简且正确的展现自己的url
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
使用步骤如下:
1、【第一步】下载jar包
在http://www.tuckey.org/urlrewrite/#download下载最新的jar文件,解压即可得到urlrewrite.xml和最新的jar包
2、新建项目TestUrlReWrite并含有web.xml
3、在web.xml中加入如下代码,该代码是实现过滤
<!-- url重写start -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- url重写end -->
其中
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
主要说明该拦截器拦截的请求包括客户端的请求和从服务器端forward的请求
4、修改urlrewrite.xml,其代码如下:
<urlrewrite>
<rule>
<from>/moudle.jsp</from>
<to>/html/index.html</to>
</rule>
<outbound-rule>
<from>/moudle.jsp</from>
<to>/2.html</to>
</outbound-rule>
</urlrewrite>
其中:
rule和outbound-rule元素可为0或者多个,其中,outbound-rule主要处理来自response.encodeURL()的地址
from必须在rule或者outbound-rule中,它的值可以使用正则表达式,它的ulr和最终的内容(结果)密切相关
to也必须在rule或者outbound-rule中,to对应你要去处理的action或者do
如:
<rule>
<from>^/world/([a-z]+)/([a-z]+)$</from>
<to>/world.jsp?country=$1&city=$2</to>
</rule>
此代码表示当url(地址栏)为/world/cn/nj时实际访问的是world/jsp?country=cn&city=nj
重启tomcat,在浏览器输入你的项目的地址:如http://127.0.0.1:8080/FreeMarker/moudle.jsp
你将会看到如下界面:
但其实moudle.jsp在我的项目中是不存在的,由于使用重定向,所以定向到了/html/index.html