filter问题:filterChain是什么东东?

spook_l 2004-08-11 06:33:14
如果我只是在doFilter方法中写了一些处理代码,然后就要执行chain.doFilter()方法传到下一个filter里,下一个filter是什么意思哪?
难道我定义了一个filter就说明有一系列的filter同时产生了吗?

比如我定义的filter是对所有访问一个网站的用户信息和相关信息进行记录,那么当来了一个访问时我用定义的myFilter进行操作,在doFilter方法里执行了记录操作,然后执行chain.doFilter(),难道有很多filter对来访问的url信息进行过滤?

还有,如果在filter链的最后,chain.doFilter()调用目的地资源是什么意思哪?

我是新手,请大侠们指点!
^_^
...全文
3404 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawnwang 2004-12-01
  • 打赏
  • 举报
回复
哦,这样呀,我想应该是这么回事:
目的地资源就是你所请求的资源,只有前面的所有过滤器都通过后,才会转向你请求的资源.举个例子来说,你发出一个url请求,然后有一堆过滤器对你进行身份验证,只有这些验证全部通过后,才会转向你所请求的页面.
baffling 2004-11-16
  • 打赏
  • 举报
回复
gz
spook_l 2004-08-12
  • 打赏
  • 举报
回复
好的,谢谢各位高手
我基本理解你们的解释了。

dawnwang(晓风) ,我说的目的地资源是书上说的,FilterChain会传递到下一个filter或者链末端的资源中。就是目的地资源吧。
BillyW 2004-08-12
  • 打赏
  • 举报
回复
/**
* 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()方法
BillyW 2004-08-12
  • 打赏
  • 举报
回复
FilterChain是servlet容器提供给开发者的一个对象,用于资源请求调用的一个链表(可以参考CoR模式)! 过滤器使用FilterChain(过滤器链表)来调用链表里的下一个过滤器!调用完链表里最后一个过滤器以后,再继续调用其它的资源。

doFilter:(没有返回值)
如果过滤器链表里没有其它过滤器的话,这个过滤链的调用就会转到其它资源的调用。
FilterChain是由容器来管理的!
Gooing 2004-08-12
  • 打赏
  • 举报
回复
chain是隐含的吧
只有多个filter 才可以chain.doFilter() 不然返回false
dawnwang 2004-08-11
  • 打赏
  • 举报
回复
如果有多个filter,它会按你的要求一个一个的执行,只有一个时,它只执行一次的.你的第二个问题不是很明白,你能不能说的清楚一些.
alexlex 2004-08-11
  • 打赏
  • 举报
回复
就像妳讀數據庫結果集每次要resultset.next() 一樣,假如妳定義暸2個filter,第一個filter裏麵的chain.doFilter()會自動調用第二個filter,第二個裏的chain.doFilter因為沒有下一個filter所以就自動停止暸,也就是對一個頁麵執行暸2個filter

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧