UrlRewrite就是地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite。将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径。
有如下特点:
1、提高安全,隐藏了本身的url
2、美化url,并且有利于搜索引擎收入,提高流量
下载jar包
网址:http://central.maven.org/maven2/org/tuckey/urlrewritefilter/
可以看到urlwritefilter的各个版本jar包
Jar包下载好之后引入到工程中
建立urlrewrite.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
"http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
<urlrewrite>
<rule>
<from>/([a-zA-Z]+).html</from>
<to last="true">/$1.jsp</to>
</rule>
</urlrewrite>
//dtd文件只有2位比如4.0.2/4.0.3/4.0.4只有urlrewrite4.0.dtd
rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式^指定字符的串开始,$为指定结束.
<rule>
<from>/(.*)/login.html</from>
<to type=“forward”>/yui/login.html?name=$1</to>
</rule>
<rule>
<from>^/user/([a-z]+)/([0-9]+)$</from>
<to>/index.jsp?nickname=$1&age=$2</to>
</rule>
比如http://localhost:8080/app/abc/login.html其实际请求的url为http://localhost:8080/app/yui/login.html?name=abc
越在前面的rule越优先生效。
配置web.xml文件
<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>