1、下载urlrewrite-3.2.0.jar,当然也可以是其他版本,在这里我用的是这个版本。然后放到项目的lib目录下。
2、配置过滤器,在web.xml中添加以下代码:
<!-- url 重写 --> <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 --> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>,这里面尤其要记得修改struts2的过滤器的mapping中的几种dispatcher。因为在没有添加之前url重写无效。
3、添加urlrewrite.xml文件。改文件放在web.xml同一级目录下面。主要内容如下:
<!-- 将首页映射为/--> <rule> <from>/index.html</from> <to type="forward">queryFontModules.action</to> </rule> <!-- 将新闻内容映射为/news-contentId-moduleId.html --> <rule> <from>^/news-([0-9]+)-([0-9]+).html$</from> <to type="forward"> /queryModuleContent.action?contentId=$1&moduleId=$2 </to> </rule>。第一个事没有产数的action映射为html。第二个是有两个参数的action映射为html。这里需要有几个注意的地方:一、多个参数在url中我们用“&”符号链接,但在这里面如要转义为:“&”;二、原来url中的参数在这里用$1、$2......表示即可,但是顺序要一致。
4、配置完成时候就可以使用了,例如在浏览器中输入.../index.html这个地址之后,程序会去执行queryFontModules.action这个action,但是地址栏中还是显示.../index.html,这样子就起到了url重写的目的。