UrlRewrite 即 地址重写,用户得到的全部都是经过处理后的URL地址。
优点
使用方法:
1、到官网http://tuckey.org/urlrewrite/下载下载urlrewritefilter.jar
2、配置web.xml文件
3、编写urlrewrite.xml配置文件
urlrewrite.xml配置文件中:
1、rule的作用:如:
<rule>
<from>/(.*).html</from>
<to>index.jsp?id=$1</to>
</rule>
其作用是:当在程序中发出2.html请求,或直接在浏览器地址栏中写入2.html时,其实际访问的是index.jsp?id=2,只是没在地址栏中表现出来而已!!
这里<to>index.jsp?id=$1</to>中默认的type="forward",就表示实际访问的地址没在地址栏中表现出来。
而如果设置type="redirect",那么实际访问的地址会在地址栏中表现出来!!
【所以如果我们想要做地址伪装的话,目前的做法是将type="forward",同时,在程序中发出请求时,请求的地址同样要写成伪装的地址。
但伪装的地址还要自己写,这样对自己很不方便。
有没有能够实现,我们在程序中发出请求时写的是实际的地址,但在地址栏中显示的是伪装的地址呢??
答案是肯定的。==》将添加outbound-rule映射,如: <outbound-rule>
<from>index.jsp</from>
<to>%{context-path}/test/status/</to>
</outbound-rule>
然后在原来,<a href="index.jsp"></a>这里改为:<a href="<%=response.encodeURL("index.jsp") %>"></a>
它就会自动帮你把你在程序中发出的请求编码成伪地址。该伪地址再映射访问实际的地址就OK了。
】
2、outbound-rule的作用
总结:
在项目中实现url重写的步骤:
1、 导入UrlRewriteFilter的jar包
2、导入urlrewrite.xml配置文件,放在/WEB-INF目录下,
3、在web.xml文件中添加一个Filter过滤器
<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>
4、在文件中,编写rule映射规则(用于输入伪地址时映射到访问真正的url地址)
5、在文件中,编写outbound-rule映射规则(用于在程序中将实际的请求地址进行编码)
6、在原来涉及url的地方:
<a href="index.jsp"></a>这里改为:<a href="<%=response.encodeURL("index.jsp") %>"></a>