1、web.xml中配置如下 <!--UrlRewriteFilter --> <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> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <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> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <!-- session超时定义,单位为分钟 --> <session-config> <session-timeout>2</session-timeout> </session-config> <!-- 需要登陆的验证- --> <filter> <filter-name>SessionFilter</filter-name> <filter-class>com.abc.util.SessionFilter</filter-class> </filter> <filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> 我在页面使用的伪静态化,所以页面看到的都是.html的链接,实际执行的都是.action 2、想实现的需求是, 现在的情况是,这个filter根本就没起作用。 |
|
两个过滤都是 /* 冲突了,,,,
<url-pattern>/*</url-pattern> 解决之道:: 两个filter 使用不同的url-pattern |
|
10分 |
两个过滤都是 /* 冲突了,,,,
<url-pattern>/*</url-pattern> 解决之道:: 两个filter 使用不同的url-pattern |
50分 |
1、2楼别误导人家,同一个URL匹配模式,可以有多个拦截器,这叫拦截器链,以xml配置的先后顺序来执行。
楼主的问题可能是要将SessionFilter加上: <dispatcher>FORWARD</dispatcher> 原因是UrlRewriteFilter捕获到.html格式后转发(forward)给下面的StrutsFilter和SessionFilter,而SessionFilter默认是处理Request类型的dispatcher,所以就放过了forward来的。 另外应该要将SessionFilter放在中间吧,即StrutsFilter之前。 |
哦,抱歉,放在StrutsFilter之前就只能当Servlet来写了。 |