OncePerRequestFilter与Filter的区别

我刚刚做了一个小小的测试。可是测试发现OncePerRequestFilter与Filter都只执行一次,,,并没有像想象中的那样的效果,,麻烦各位大虾帮我看看。。。。我在下面会上传我做的小例子。。。。如果大家有发现问题。可以回复我,也可以将修改后的小例子发我邮箱
onlyboor@163.com

[quote]其实我想要的效果是,,

OncePerRequestFilter执行一次

Filter执行多次。。。 [/quote]

那就得定义多个Filter了。

是执行一次。
System.out.println("执行了Filter");
chain.doFilter(req, res);
System.out.println("--filter 执行结束--");

你应该这样做

恩,是执行一次。
你做的操作 不是 在执行 action完要执行其他代码吗?

filter就是这样的操作,进去 出来

filter只要满足url-pattern的请求都会拦截到,进入到doFilter方法.

如果是说一个会话/请求只执行一次filter的逻辑,就需要在Once执行完逻辑后,在会话上设置相应的标识...再去进入的时候,判断是否有标识.如果有,则已经执行过.直接chain...

想一下用户登录的可能判断.应该有帮助.

你应该在web.xml中把普通的filter配置在OncePerRequestFilter前面。

事实上OncePerRequestFilter是为了避免不同servlet 容器的不同行为而出现的,servlet2.3和2.4就在请求转发的过滤行为上有差别。你可以试试