首先,要使用urlrewrite需要导入jar包
官方下载地址:
①http://tuckey.org/urlrewrite/
②http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html
如果两个链接都进不去我这里上传有。
新建一个xml文件,名字为urlrewrite.xml,并将他放到WEB-INF目录下。注意,不是放到源文件包里面。
在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> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
与struts2结合会出现404错误,解决方法,将下面两段代码加入struts2过滤器
<dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher>
如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
接下来修改 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>^/test.html$</from> <to>/test.jsp</to> </rule> </urlrewrite>
简单的配置一下,新建一个test.jsp页面,在index.jsp添加一个链接,链接到test.html
当点击的时候,地址栏显示的是test.html,但实际上访问的是test.jsp
当然,这只是最简单的配置方法。
比如说我想要在跳转的同时传递参数。
只需要修改这里,或者加。
比如说我想要跳转到 test.jsp ,并传递参数 id=5 、username=aa
<rule> <from>^/([a-z]+)/([0-9]+)/([a-z]).html$</from> <to>/$1.jsp?id=$2&username=$3</to> </rule>
$1代表的是第一个括号的正则 ,即 ([a-z]+),在xml里面 & 这个符号是不被识别的,因此需要转换编码,即 &
如果是跳转 servlet 貌似要先加个目录,反正我没加的时候从来没有成功过,报一堆的错误,无意加了个目录就可以用了,当时我就无语了。。
<rule> <from>^/aa/([A-Za-z]+).html$</from> <to>/$1servlet?doAction=aa</to> </rule>
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^/w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
这些是 urlrewrite 的正则表达式。很容易理解的。