urlrewrite与struts2结合使用配置

本文侧重在urlrewrite与struts2的结合配置时需要注意的地方,重点不在urlrewrite规则的具体配置。

如果对urlrewrite的配置想进行更深入的了解解,请查看下面链接

Java-UrlRewrite中文官方文档


下面直接进入配置说明:

1、web.xml

在配置过滤器的时候,注意配置顺序,Struts2的过滤器要配置在UrlRewriteFilter过滤器后面。

什么时候配置以下三个 ?

<dispatcher>REQUEST</dispatcher>  默认配置,即不进行任何配置是使用的方式,过滤所有的非转发请求。
<dispatcher>FORWARD</dispatcher> 对FORWARD转发的请求进行过滤,比如在代码中有使用FORWARD转发时会进行二次过滤(因为第一次请求也会被过滤)。
<dispatcher>INCLUDE</dispatcher> 与FORWARD非常类似,惟一的不同在于:利用include将HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。


所以如果你需要对经过FORWARD转发后的请求URL(例如要对经过Struts2转发后的URL进行包装,Struts2是通过FORWARD将请求参数转发到具体JSP文件的)与直接请求的URL进行处理,就仿照下面配置。

<!-- URL重定向 -->
	<filter>  
	    <filter-name>UrlRewriteFilter</filter-name>  
	    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>  
	</filter>
	<init-param>
		<param-name>logLevel</param-name>
		<param-value>sysout:DEBUG</param-value>
	</init-param>
	<filter-mapping>  
	    <filter-name>UrlRewriteFilter</filter-name>  
		<url-pattern>/*</url-pattern> 
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>


因为UrlReWrite默认转发方式为FORWARD,所以要想让你的Struts2过滤器拦截到UrlReWrite转发的请求,必须在filter-mapping加上<dispatcher>FORWARD</dispatcher>

例如以下配置:
	<!-- STRUTS2 配置 -->
	<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>*.do</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>

注意:如果你有自己的权限验证filter,要想验证转发的URL是否拥有访问权限,也必须在 filter-mapping加上 <dispatcher>FORWARD</dispatcher>,否则你的filter将不对这进行拦截。


2、urlrewrite.xml


如果你不对urlrewrite的配置文件路径进行配置,其默认路径在WEB-INF下,与web.xml同目录

以下是一个简单示例,使用了wildcard与正则表达式进行配置,需要了解更详细具体配置方法请参考文章顶端的链接。


<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE urlrewrite  
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"  
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite>

	<!-- /user/blog/main.html - /blog/blog_main.htm?user.user_name=user -->
	<rule match-type="wildcard">
		<from>/*/blog/main.html*</from>
		<to type="forward">/blog/blog_main.htm?user.user_name=$1</to>
	</rule>

	<!-- blog -->
	<outbound-rule>
		<from>/([a-zA-Z]+)/blog/blog_main.htm</from>
		<to>/$1/blog/main.html</to>
	</outbound-rule>
</urlrewrite>

如果还有什么配置上的疑问可以进行留言评论哦 ~


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值