1. 在maven项目的pom.xml文件里加入:
<!-- URL Rewrite --> <dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>3.1.0</version> </dependency> 3.在WEB项目的web.xml里加上urlrewrite的过滤器 <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param><!-- 设置自动更新urlrewrite.xml信息 -->
<param-name>confReloadCheckInterval</param-name> <param-value>60</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> 2. 在Web项目下WEB-INF目录里新建一个名为urlrewrite.xml的文件,标签格式如下:重写index.jsp成index.html example:/index.html /index.html /index.jsp 将view根目录下所有jsp资源重写成/xxx.action example:/index.action /([A-Za-z0-9]+).action /view/$1.jsp forward(转发模式)传参 example:/user/param/fancy/8080.do /user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do /view/parameter/$1.jsp?username=$2&password=$3 redirect(重定向模式)传参,to中写绝对地址 example:/admin/param/fancy/8080.do /admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do /urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&password=$3
urlrewrite.xml 这个配置文件一定只能放在 WEB-INF 下,放别的地方,无论你在web.xml中怎么配置都是不行的,至少现在是不行的。
所谓重写,就一定会有规则的匹配,这里用到了正则表达式,方便起见,我只用了[A-Za-z0-9]+,简单的解释一下:
A-Z:匹配 A 到 Z 中的任意一个字符,说一句废话,同理可得,
a-z:匹配 a 到 z 中的任意一个字符
0-9:匹配 0 到 9 的任意一个字符
+:至少出现一次,即,一次或一次以上
合起来 [A-Za-z0-9]+ 的意思就是:匹配一个任意的英文字母和数字组合的字符串
<rule>:自定义匹配规则
<note>:注释,解释标签
<from>:定义具体的匹配规则
<to>:匹配成功后的目标地址
<to type="">:type的值有两个,一个是 forward (转发,参数不丢失),一个是 redirect (重定向,地址栏显示的地址就是目标真实地址)
$1:匹配中的第一个正则表达式的字符串的值,$2,$3,$4....也是如此
& :是 & 的实体名,代表的就是 &,这个可以在 w3school 中找到:
第一个rule:访问 /index.html,实际上是访问了 /index.jsp
第二个rule:访问 /xx.action , 实际上是访问了 view 目录下的 xx.jsp
第三个rule:访问 /user/xx/yy/zz.do , 实际上是访问了 view 目录下的 parameter 目录下的 xx.jsp?username=yy&password=zz
第四个rule:跟第三个其实是一样的,但是由于是重定向模式,所以地址栏就会显示真的是地址
在 pom.xml 中右键,Run as --> Maven install
下面是生成的 target 资源:
将 war 文件拷贝到你的 服务器中,我用的是tomcat,然后启动tomcat:
如果你是第一次使用 urlrewrite 可能会抛一个异常:
这个异常信息是说系统找不到 tomcat bin 下的 urlrewrite3.2.dtd 文件,解决办法很简单:
方法一:将 urlrewrite3.2.dtd 放到 urlrewrite.xml 所在的目录下,即 WEB-INFO 的目录下
方法二:将 urlrewrite3.2.dtd 放到 tomcat 的 bin 目录下,这个方法一劳永逸,所以我选的是这个
urlrewrite3.2.dtd 这个文件可以在文章的最下面下载,源码包里我没有放这个文件,没问题之后,