各位,我在用Jsp Filter与Struts2的时候遇到了以下问题:我想在Jsp Filter里把页面Forward到另一个页面,但由于另一个页面里面使用了Struts的标签,所以请求信息必须要经过Struts2的FilterDispatcher,请问有什么办法可以顺利把页面Forward到另一页面呢?访问某一页面-->自定义的Jsp Filter(do somthing...)-->filter中forward到另一页面-->页面中使用了Struts2标签,由于整个请求没有经过Struts2的FilterDispather,所以报错PS:由于Struts2的Interceptor只对Action起作用,所以我只能用Jsp Filter而没用Struts2的Interceptor
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping>
这样是可以的啊.
你可以将自定义的过滤器声明放在struts2的FilterDispather声明之前,在doFilter中将控制权交给struts,页面转向放在struts的配置文件里。
<%@ include....
这样就可以把jsp页面也拦截下来
12楼真有创意,呵,不过像9楼所说的,Struts2的FilterDispatcher本身就是一个Filter,FilterDispatcher接到Action请求后再交给Struts2的Interceptor进行处理,所以本质上来说,Filter可以做Interceptor的所有事情,Interceptor只不过是Filter的一个子集而已,所以如果决定使用Filter的话就没必要再使用拦截器了。PS:Filter可以做Interceptor的所有事情,但Interceptor却无法做Filter的所有事情,这也是我所烦恼的事情。
<filter>
<filter-name>forwardfilter</filter-name>
<filter-class>com.test.filter.ForwardFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>forwardfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--struts2的filterDispatcher-->
<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>
</filter-mapping>