各位,我在用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

解决方案 »

  1.   

    jsp版AJAX下拉条级联这个项目里有关于filter有效配置
      

  2.   

    楼上不明白什么叫Struts2吗,搞个纯Jsp的忽悠人啊!不懂的话Google或Baidu一下
      

  3.   

    都用struts2了, 还用filter 干么  用struts2里面的拦截器不就行了 , 达到同样的效果
      

  4.   


        <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>   </filter-mapping>
    这样是可以的啊.
      

  5.   

    因为Struts2的拦截器只能对Action起作用,但是没办法对Jsp页面进行控制,所以我才用Filter呀
      

  6.   

    我是想在请求经过Struts2前对请求进行过滤,所以上面的配置将没有办法得到执行的。
      

  7.   

    FilterDispather本质上也就是一个filter,当多个filter都匹配的时候,执行顺序是按照web.xml中定义的顺序进行的。
    你可以将自定义的过滤器声明放在struts2的FilterDispather声明之前,在doFilter中将控制权交给struts,页面转向放在struts的配置文件里。
      

  8.   

    <jsp:include ....
    <%@ include....
      

  9.   

    举个例子来说吧,当访问某一不存在的Jsp页面时,我想在自定义Filter里面Forward到另一页面进行显示,但是交给Struts2的话,它仅仅只是判断这个请求是不是Action,如果是Action就执行,如果不是的话就又把请求传递给下一个Filter,这样子当然会显示找不到页面(404)错误呀。当然,可以把全部的Jsp页面定义对应的Action(即使不存在的页面也是),这样Struts2就可以处理了,但这并不 我的初衷,我只想找到一个自定义的Filter与Struts2能够一起工作的方法。
      

  10.   

    恩 我有个想法不晓得可行不 就是把拦截器类实现一个filter接口
    这样就可以把jsp页面也拦截下来 
      

  11.   


    12楼真有创意,呵,不过像9楼所说的,Struts2的FilterDispatcher本身就是一个Filter,FilterDispatcher接到Action请求后再交给Struts2的Interceptor进行处理,所以本质上来说,Filter可以做Interceptor的所有事情,Interceptor只不过是Filter的一个子集而已,所以如果决定使用Filter的话就没必要再使用拦截器了。PS:Filter可以做Interceptor的所有事情,但Interceptor却无法做Filter的所有事情,这也是我所烦恼的事情。
      

  12.   

    用struts2里面的拦截器你怎么配的
      

  13.   

    不知道你指的是Intercpetor还是FilterDispatcher,如果是Interceptor的话那我所做的事情跟Interceptor根本无关,配置在struts.xml里面,这个根本不用讨论,如果是FilterDispatcher的话,配置在web.xml,见下面:         <!--自定义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>