0 0

OncePerRequestFilter与Filter的区别20

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

问题补充:
zhanghongliang_cyj 写道
是执行一次。
System.out.println("执行了Filter");
chain.doFilter(req, res);
System.out.println("--filter  执行结束--");

你应该这样做


我的意思是,OncePerRequestFilter是只执行一次的过滤器,而Filter是普通的过滤器。为什么运行结果却是他们都只执行一次?是不是我的小例子有问题?还是我理解错误?

问题补充:
zhanghongliang_cyj 写道
是执行一次。
System.out.println("执行了Filter");
chain.doFilter(req, res);
System.out.println("--filter  执行结束--");

你应该这样做


我刚刚按你的这样写了。在OncePerRequestFilter中的doFilter方法中修改如下:

System.out.println(request.getRemoteAddr());
request.setAttribute("message", request.getLocalName());
chain.doFilter(request, response);
System.out.println("OncePerRequestFilter结束!");

在Filter中的doFilter方法中修改如下:
System.out.println("执行了Filter");
chain.doFilter(req, res);
System.out.println("Filter结束");


运行后结果为:
127.0.0.1
执行了Filter
Filter结束
OncePerRequestFilter结束!

这说明还是都只执行一次啊。

问题补充:
zhanghongliang_cyj 写道
恩,是执行一次。
你做的操作  不是  在执行 action完要执行其他代码吗?

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

其实我想要的效果是,,

OncePerRequestFilter执行一次

Filter执行多次。。。
2011年4月26日 15:17

5个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
其实我想要的效果是,,

OncePerRequestFilter执行一次

Filter执行多次。。。


那就得定义多个Filter了。

2011年5月08日 13:18
0 0

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

2011年5月09日 09:43
0 0

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

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

2011年5月07日 16:26
0 0

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

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

2011年4月26日 17:32
0 0

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

你应该这样做

2011年4月26日 15:35

相关推荐

    spring-cors-filter:一个Spring Framework OncePerRequestFilter实现,用于将CORS标头应用于HTTP响应

    一个简单的OncePerRequestFilter实现,可以为HTTP响应添加CORS相关标头。 入门 包括JAR 包括JAR文件作为对项目的依赖项。 它可以通过Maven Central获得。 玛文  <groupId>io.sprucehill  <artifactId>spring-...

    在Spring MVC或Spring Boot中使用Filter打印请求参数问题

    Spring提供了`OncePerRequestFilter`抽象类,它是对传统`Filter`的一个封装,确保每个请求只被过滤一次,避免了在多线程环境下的并发问题。然而,如果在处理JSON类型的POST请求时,直接在Filter中打印请求参数,可能...

    spring-boot 过滤器 filter

    六、Filter的顺序与级联 多个Filter可以组成一个过滤链,Spring Boot会根据`FilterRegistrationBean`的顺序进行执行。默认情况下,Spring Boot的内置Filter会先执行,然后是用户自定义的Filter。 总结,Spring ...

    过滤器例子下载实例

    2. **Filter链与doFilter()**: `doFilter()`方法接收`ServletRequest`和`ServletResponse`对象作为参数,并通过`Chain`参数(通常是`FilterChain`对象)来传递请求给下一个Filter或目标Servlet。在这个例子中,...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    在Web应用中,字符编码问题常常引发乱码问题,尤其是在用户输入的数据与服务器处理数据之间存在编码不一致时。`CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,...

    java head space.txt

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ...

    CharacterEncodingFilter类的学习 .doc

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <param-name>encoding <param-value>UTF-8 <param-name>forceEncoding <param-value>false </filter> <filter-...

    apache-tomcat-7.0.69.zip

    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) ...

    Halo 开源项目学习(三):注册与登录.doc

    这些过滤器包括 ContentFilter、ApiAuthenticationFilter 和 AdminAuthenticationFilter,它们都是 AbstractAuthenticationFilter 的子类。AbstractAuthenticationFilter 又继承自 OncePerRequestFilter。 过滤器的...

    springmvc框架

    在Spring MVC中,我们可以通过实现`Filter`接口或者继承`OncePerRequestFilter`类来自定义过滤器,并通过`web.xml`配置文件或Spring的`@WebFilter`注解进行注册。 具体到文件`spring_mvc`,可能包含以下内容: 1. ...

    SpringBoot +esapi 实现防止xss攻击 实战代码

    public class XssFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ...

    Spring MVC过滤器-登录过滤的代码实现

    import org.springframework.web.filter.OncePerRequestFilter; public class SessionFilter extends OncePerRequestFilter { private String[] notFilter = new String[] { "login.html", "index.html" }; @...

    Springmvc ajax跨域请求处理方法实例详解

    <filter-name>cors</filter-name> <filter-class>cn.*.filter.CrossFilter</filter-class> </filter> ``` 三、结论 本文主要介绍了 SpringMVC AJAX 跨域请求处理方法实例详解,解决了 AJAX 跨域请求问题。使用 ...

    SpringSecurity Jwt Token 自动刷新的实现

    import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    通过原理解析Spring mvc的内置编码过滤器

    public class CharacterEncodingFilter extends OncePerRequestFilter { private String encoding; private boolean forceRequestEncoding = false; private boolean forceResponseEncoding = false; public ...

    java中五种常用的过滤器

    public class UrlRewriteFilter extends OncePerRequestFilter { // 省略具体实现,通常这个过滤器需要一个配置文件来定义重写规则 } ``` 以上五个过滤器涵盖了常见的Web开发需求,如缓存控制、登录验证、字符编码...

    jquery字符编码转换[文].pdf

    import org.springframework.web.filter.OncePerRequestFilter; public class MutilCharacterEncodingFilter extends OncePerRequestFilter { // ... 正则表达式匹配编码信息 ... // 在doFilterInternal方法中...

    Springmvc restful配置遇到的小坑

    public class ServletRequestFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ...

    解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

    public class CharacterEncodingFilter extends OncePerRequestFilter { @Nullable private String encoding; private boolean forceRequestEncoding; private boolean forceResponseEncoding; public ...

Global site tag (gtag.js) - Google Analytics