struts2 url 重写 用urlrewrite

来源:

 struts2 url 重写

刚做完一个项目,因为是一个网站,所以会考虑到seo的东西。因为是用ssh做的,因此这里面就会出现*.action、*.jsp等不利于seo的一些值,所以就用urlrewtire这个插件做了处理,处理的相关内容如下:
1、下载urlrewrite-3.2.0.jar,当然也可以是其他版本,在这里我用的是这个版本。然后放到项目的lib目录下。
2、配置过滤器,在web.xml中添加以下代码:

Java代码   收藏代码
  1. <!-- url 重写 -->  
  2.    <filter>  
  3. <filter-name>UrlRewriteFilter</filter-name>  
  4. <!-- 过滤器类所在的路径: -->  
  5. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>  
  6. </filter>  
  7.   
  8. <filter-mapping>  
  9.     <filter-name>UrlRewriteFilter</filter-name>  
  10.     <!-- 拦截所有url -->  
  11.     <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  
  13.    <filter>  
  14.        <filter-name>struts2</filter-name>  
  15.        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  16.    </filter>  
  17.    <filter-mapping>  
  18.        <filter-name>struts2</filter-name>  
  19.        <url-pattern>/*</url-pattern>  
  20.        <dispatcher>REQUEST</dispatcher>  
  21.     <dispatcher>FORWARD</dispatcher>  
  22.     <dispatcher>INCLUDE</dispatcher>    (有些网站没有加上?)
  23.    </filter-mapping>  

,这里面尤其要记得修改struts2的过滤器的mapping中的几种dispatcher。因为在没有添加之前url重写无效。
3、添加urlrewrite.xml文件。改文件放在web.xml同一级目录下面。主要内容如下:

Java代码   收藏代码
  1. <!-- 将首页映射为/-->  
  2.     <rule>  
  3.         <from>/index.html</from>  
  4.         <to type="forward">queryFontModules.action</to>  
  5.     </rule>  
  6.     <!-- 将新闻内容映射为/news-contentId-moduleId.html -->  
  7.     <rule>  
  8.         <from>^/news-([0-9]+)-([0-9]+).html$</from>  
  9.         <to type="forward">  
  10.         /queryModuleContent.action?contentId=$1&amp;moduleId=$2  
  11.         </to>  
  12.     </rule>  

。 第一个是没有产数的action映射为html。第二个是有两个参数的action映射为html。这里需要有几个注意的地方:一、多个参数在url中我 们用“&”符号链接,但在这里面如要转义为:“&amp;”;二、原来url中的参数在这里用$1、$2......表示即可,但是顺序 要一致。
4、配置完成时候就可以使用了,例如在浏览器中输入.../index.html这个地址之后,程序会去执行queryFontModules.action这个action,但是地址栏中还是显示.../index.html,这样子就起到了url重写的目的。

猜你喜欢

转载自jackroomage.iteye.com/blog/1867703