当前位置:编程学习 > JAVA >>

Filter会被执行几次

如果一个servlet配置了一个filter ,那么这个filter会被执行几次呢。。我认为是两次,因为在请求时截获请求,在响应时截获响应。。。我的理解对吗。。。还是可以指定一个servlet只截获请求或是响应呢 --------------------编程问答-------------------- 只要被拦截到的都会被执行... --------------------编程问答-------------------- o(∩_∩)o 哈哈  结束的时候好像也会执行一次哦。 --------------------编程问答-------------------- 一来,一回 --------------------编程问答-------------------- 一个filter就一次吧。其实它好像是递归实现的,就是在当前filter的时候还没执行完,执行下一个filter,下一个filter执行完后才继续执行当前的filter的。 --------------------编程问答-------------------- e  n  --------------------编程问答-------------------- 就是2次,把它看成个中转站就行,来的时候经过它回去的时候也经过它。 --------------------编程问答-------------------- 就是2次,请求和响应都会拦截 --------------------编程问答-------------------- 我想应该是一次吧。

请求来的时候,执行过滤器,一直执行到调用doFilter()处,停住,去执doFilter()里面的内容,像jsp、servlet或另一个过滤器。这些内容执行完后,会返回到先前调用doFilter()停住的地方继续向下执行(相当于doFilter()函数返回了)下面的代码。

因此,可以在同一个过滤器里做一些处理来访问这个过滤器之后被调用的资源(jsp、servlet或另一个过滤器)所产生的响应内容。或者你也可以做个试验来验证一下。 --------------------编程问答-------------------- 看配置才行,默认情况是1次,过滤的请求. --------------------编程问答-------------------- 晕死,匹配到的URL都会进入Filter,请求的时候和返回的时候URL如果都满足Filter条件,当然都会触发执行 --------------------编程问答-------------------- 楼主可以看一下《servlet与jsp核心编程》第二版第二卷。它的过滤器那章讲地蛮清楚的。 --------------------编程问答-------------------- 一趟的话,一进一出。。。就好比你好进你房间拿东西一样,过滤器就是房门,你得从门进去,拿完东西,然后再从门口出来。。。 --------------------编程问答-------------------- 只要请求中文就会被执行,一般是这样的 --------------------编程问答-------------------- 讲一次可以,两次也行

做doFilter调用前的代码和做doFilter调用后的代码,因为中间doFilter出当前Filter了,所以可以看做是出去了,又回来,两次。
但过滤器自己的方法只被调用一次。
虽然执行焦点进入两次。

还有个特殊情况就是Filter中止了请求的进一步深入,没有再进一步调用doFilter了,那么这时很明显方法只被调用一次,且执行焦点只进入一次。 --------------------编程问答--------------------
引用 8 楼 liuyiwu 的回复:
我想应该是一次吧。

请求来的时候,执行过滤器,一直执行到调用doFilter()处,停住,去执doFilter()里面的内容,像jsp、servlet或另一个过滤器。这些内容执行完后,会返回到先前调用doFilter()停住的地方继续向下执行(相当于doFilter()函数返回了)下面的代码。

因此,可以在同一个过滤器里做一些处理来访问这个过滤器之后被调用的资源(jsp、servlet……



谢谢了 --------------------编程问答-------------------- LZ的想法很好,不过在过滤器filter中的doFilter方法中带着3个参数,其中就有request,response,利用他提供的Filter累估计不能实现,不过我们可以自定义类去继承,解耦response 或request --------------------编程问答--------------------
引用 14 楼 magong 的回复:
讲一次可以,两次也行

做doFilter调用前的代码和做doFilter调用后的代码,因为中间doFilter出当前Filter了,所以可以看做是出去了,又回来,两次。
但过滤器自己的方法只被调用一次。
虽然执行焦点进入两次。

还有个特殊情况就是Filter中止了请求的进一步深入,没有再进一步调用doFilter了,那么这时很明显方法只被调用一次,且执行焦点只进入一次。


这样讲很专业 --------------------编程问答-------------------- 应该是一次吧。。。。 --------------------编程问答-------------------- 学习了! --------------------编程问答-------------------- 需要看配置的,配置文件的 发送 和 响应       所以1-2次
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,