就像妳讀數據庫結果集每次要resultset.next() 一樣,假如妳定義暸2個filter,第一個filter裏麵的chain.doFilter()會自動調用第二個filter,第二個裏的chain.doFilter因為沒有下一個filter所以就自動停止暸,也就是對一個頁麵執行暸2個filter

解决方案 »

  1.   

    如果有多个filter,它会按你的要求一个一个的执行,只有一个时,它只执行一次的.你的第二个问题不是很明白,你能不能说的清楚一些.
      

  2.   

    chain是隐含的吧
    只有多个filter 才可以chain.doFilter() 不然返回false
      

  3.   

    FilterChain是servlet容器提供给开发者的一个对象,用于资源请求调用的一个链表(可以参考CoR模式)! 过滤器使用FilterChain(过滤器链表)来调用链表里的下一个过滤器!调用完链表里最后一个过滤器以后,再继续调用其它的资源。doFilter:(没有返回值)
    如果过滤器链表里没有其它过滤器的话,这个过滤链的调用就会转到其它资源的调用。
    FilterChain是由容器来管理的!
      

  4.   

    /**
     * Implementation of <code>javax.servlet.FilterChain</code> used to manage
     * the execution of a set of filters for a particular request.  When the
     * set of defined filters has all been executed, the next call to
     * <code>doFilter()</code> will execute the servlet's <code>service()</code>
     * method itself.
     *
     * @author Craig R. McClanahan
     * @version $Revision: 1.10.2.1 $ $Date: 2001/10/12 01:57:41 $
     */如果回复链里没有其它过滤器可调用的话,就会调用servlet的service()方法
      

  5.   

    好的,谢谢各位高手
    我基本理解你们的解释了。dawnwang(晓风) ,我说的目的地资源是书上说的,FilterChain会传递到下一个filter或者链末端的资源中。就是目的地资源吧。
      

  6.   

    哦,这样呀,我想应该是这么回事:
    目的地资源就是你所请求的资源,只有前面的所有过滤器都通过后,才会转向你请求的资源.举个例子来说,你发出一个url请求,然后有一堆过滤器对你进行身份验证,只有这些验证全部通过后,才会转向你所请求的页面.