定义:
urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,好处:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前。
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息。
项目部署
1、在http://tuckey.org/urlrewrite/下载urlrewirtefilter,现在有2.6.0和3.2.0两个版本,这里对比网站选择的是前面一个稳定版本。
2、把urlrewrite-2.6.0.jar和urlrewrite.xml(放在WEB-INF文件夹下面)拷贝到我们项目中。
3、在web.xml文件里配置urlrewrite的核心控制器(过滤器),代码如下:
<filter>
<filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<!--<dispatcher>REQUEST</dispatcher>-->
<!--<dispatcher>FORWARD</dispatcher>-->
</filter-mapping>
4、需要配置urlrewrite.xml文件来实现url静态化,下面将详细说明
<urlrewrite>
<rule>
<from>/see-all-departments.html</from>
<to type="forward">/buyer/viewalldepartment.do</to>
</rule>
<outbound-rule>
<from>/buyer/viewrootcategory.do/?categoryDetail.id=([0-9]+)&categoryname=(.*)</from>
<to>/catalog/$1/$2</to>
</outbound-rule>
<rule>
<from>/catalog/([0-9]+)/(.*)</from>
<to>/buyer/viewrootcategory.do/?categoryDetail.id=$1</to>
</rule>
<outbound-rule>
<from>/buyer/viewstandproductdetail.do/?productDetail.id=([0-9]+)&productname=(.*)</from>
<to>/$1/$2/compare</to>
</outbound-rule>
<rule>
<from>/([0-9]+)/(.*)/compare</from>
<to>/buyer/viewstandproductdetail.do/?productDetail.id=$1</to>
</rule>
说明:
<rule>标签:设置url重写规则,它将重写后的URL和实际URL对应起来。如
<rule>
<from>/see-all-departments.html</from>
<to type="forward">/buyer/viewalldepartment.do</to>
</rule>
在浏览器地址输入http://www.shopsimple.com/see-all-departments.html实质上访问http://www.shopsimple.com/buyer/viewalldepartment.do.
<outbound-rule>标签:把页面上的*.do换成你浏览器地址上的url.如
<outbound-rule>
<from>/buyer/viewstandproductdetail.do/?productDetail.id=([0-9]+)&productname=(.*)</from>
<to>/$1/$2/compare</to>
</outbound-rule>
<rule>
<from>/([0-9]+)/(.*)/compare</from>
<to>/buyer/viewstandproductdetail.do/?productDetail.id=$1</to>
</rule>
在页面通过<a href="<c:url value="http://www.shopsimple.com/buyer/viewstandproductdetail.do?productDetail.id=1& productname=test" />"" target="_blank">test</a>游览器页面上会显示<a href=” http://www.shopsimple.com/1/test/compare”>test</a>
注意:<rule>标签可以单独的存在。而<outbound-rule>必须要和<rule>标签成对出现。而且在页面的时候需要<c:url>标签来转换成<rule>所对应的规则。