struts2与urlrewrite的整合 (转)

关于为什么要把.jsp或者.do?param1=value1&param2=value2.......这样的链接地址修改成普通的html地址,

作用1:

便于搜索引擎搜索。

作用2:

隐藏技术实现,提高网站的移植性,对于移植性这点会带来很大的方便,当底层定义的相关.do方法变化或者修改后不必到每个页面去修改相关的链接,而是直接修改urlrewrite.xml

其他的相关介绍网上一把一把的,下面具体说实现。环境struts2+spring+hibernate

第一步:

下载JAR包,我这用的是urlrewrite-2.6.0.jar

第二步:

修改项目的web.xml,在web.xml加入

  1. <filter>
  2. <filter-name>UrlRewriteFilter</filter-name>
  3. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>UrlRewriteFilter</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>
<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> </filter-mapping>

注意与其他filter间的顺序,加在OpenSessionInViewFilter之后,org.apache.struts2.dispatcher.FilterDispatcher之前,不然会出现could not initialize proxy - the owning Session was closed异常

将struts2过滤器进行修改,修改后如下

  1. <filter-mapping>
  2. <filter-name>struts2</filter-name>
  3. <url-pattern>/*</url-pattern>
  4. <dispatcher>REQUEST</dispatcher>
  5. <dispatcher>FORWARD</dispatcher>
  6. </filter-mapping>
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>

一定要加
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>

不然会导致404错误

第三步:

将官方下载urlrewrite.xml放进WEB-INF目录下注释掉不相关类容,加入自己的规则

第四步:

具体的规则说明

假设你的站点为:http://127.0.0.1:8080/app

规则1:不带参数的情况

<rule>
<note/>
<from>^/testUrl.html</from>
<to>/ajax/testUrl.do</to>
</rule>

当你请求http://127.0.0.1:8080/app/testUrl.html实际是访问的http://127.0.0.1:8080/app/ajax/testUrl.do

规则2:带一个数字参数的情况

<rule>
<note>comment-productId.html</note>
<from>^/comment/-([0-9]+).html$</from>
<to>/user/queryComment.do?productId=$1</to>
</rule>

当你请求http://127.0.0.1:8080/app/comment-100.html实际是访问的http://127.0.0.1:8080/app/user/queryComment.do?productId=100


规则3:带多个数字参数,既有数字又有字母的情况

<rule>

<note>comment-productId-pgMethod-cPage.html</note>
<from>^/comment/-(/d+)/-(/w+)/-(/d+)/.html$</from>
<to>/user/queryComment.do?productId=$1&amp; pgMethod=$2&amp; cPage=$3</to>
</rule>

当你请求http://127.0.0.1:8080/app/comment-100-n-1.html

实际是访问的http://127.0.0.1:8080/app/user/queryComment.do?productId=100&pgMethod=n&cPage=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值