我刚刚做了一个小小的测试。可是测试发现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的逻辑,就需要在Once执行完逻辑后,在会话上设置相应的标识...再去进入的时候,判断是否有标识.如果有,则已经执行过.直接chain...
想一下用户登录的可能判断.应该有帮助.
你应该在web.xml中把普通的filter配置在OncePerRequestFilter前面。
事实上OncePerRequestFilter是为了避免不同servlet 容器的不同行为而出现的,servlet2.3和2.4就在请求转发的过滤行为上有差别。你可以试试