urlrewrite字面意思为重写路径,可以改变浏览器中我们看得到的 URL路径,而且有得于搜索引擎抓取,form表单、ajax都不利于搜索引擎抓取。
首先我们需要导入jar包,jar包可以去maven仓库下载。
1、我用的是目前最新的版本4.0.4
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.4</version>
</dependency>
2、在web.xml中配置一个过滤器,用来过滤请求
<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>
</filter-mapping>
3、在 WEH-INF中新建xml文件urlrewrite.xml,注意:文件名字就取这个名字
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite
2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
<!--规则 -->
<rule>
<from>/([0-9])/([0-9]).html$</from>
<to type="forward">?a=$1&b=$2</to>
</rule>
</urlrewrite>
解释:
<urlrewrite>:不解释了
<rule>:标签内是规则,与参数的赋值 ,可以增加rule标签来适应更新多的匹配规则
<from>:检查当前请求的url链接是否与标签内的正则表达式匹配
<to>:如果<from>标签内检查通过,则执行这一步,<from>中第一个正则匹配得到的数据代号为$1,第二个正则匹配到的数据为为$2........依此类推
其实to标签中的内容就是http://localhost:8080/projectName/servlet?a=1&b=2中的?a=1&b=2,a和b是参数名,由程序员根据后台自己定义,1和2就是from标签中匹配到参数值。
<to>里面的type值可以为forward、redirect,其实和servlet中的一样,一个是直接跳转到对应路径中去,一个根据对应的链接重新再请求一次。
4、到这里,后台已经好了,现在只需在页面根据个人的需要生成相应链接
比如上面这个例子,对应的页面链接就是<a href="http://localhost:8080/projectName/servlet/1/2.html">你需要链接的地方</a>,此链接中被/[0-9]/[0-9].html$匹配/1/2.html,1是匹配到的第一个参数$1,2是匹配到的第二个参数$2,然后再到to里面给参数赋值?a=$1&b=$2 其实也就是这意思?a=1&b=2,
.......ok了!