-
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个答案 按时间排序 按投票排序
-
采纳的答案
引用其实我想要的效果是,,
OncePerRequestFilter执行一次
Filter执行多次。。。
那就得定义多个Filter了。2011年5月08日 13:18
-
filter只要满足url-pattern的请求都会拦截到,进入到doFilter方法.
--
如果是说一个会话/请求只执行一次filter的逻辑,就需要在Once执行完逻辑后,在会话上设置相应的标识...再去进入的时候,判断是否有标识.如果有,则已经执行过.直接chain...
想一下用户登录的可能判断.应该有帮助.2011年5月07日 16:26
-
恩,是执行一次。
你做的操作 不是 在执行 action完要执行其他代码吗?
filter就是这样的操作,进去 出来2011年4月26日 17:32
-
是执行一次。
System.out.println("执行了Filter");
chain.doFilter(req, res);
System.out.println("--filter 执行结束--");
你应该这样做2011年4月26日 15:35
相关推荐
一个简单的OncePerRequestFilter实现,可以为HTTP响应添加CORS相关标头。 入门 包括JAR 包括JAR文件作为对项目的依赖项。 它可以通过Maven Central获得。 玛文 <groupId>io.sprucehill <artifactId>spring-...
Spring提供了`OncePerRequestFilter`抽象类,它是对传统`Filter`的一个封装,确保每个请求只被过滤一次,避免了在多线程环境下的并发问题。然而,如果在处理JSON类型的POST请求时,直接在Filter中打印请求参数,可能...
六、Filter的顺序与级联 多个Filter可以组成一个过滤链,Spring Boot会根据`FilterRegistrationBean`的顺序进行执行。默认情况下,Spring Boot的内置Filter会先执行,然后是用户自定义的Filter。 总结,Spring ...
2. **Filter链与doFilter()**: `doFilter()`方法接收`ServletRequest`和`ServletResponse`对象作为参数,并通过`Chain`参数(通常是`FilterChain`对象)来传递请求给下一个Filter或目标Servlet。在这个例子中,...
在Web应用中,字符编码问题常常引发乱码问题,尤其是在用户输入的数据与服务器处理数据之间存在编码不一致时。`CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,...
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ...
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <param-name>encoding <param-value>UTF-8 <param-name>forceEncoding <param-value>false </filter> <filter-...
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) ...
这些过滤器包括 ContentFilter、ApiAuthenticationFilter 和 AdminAuthenticationFilter,它们都是 AbstractAuthenticationFilter 的子类。AbstractAuthenticationFilter 又继承自 OncePerRequestFilter。 过滤器的...
在Spring MVC中,我们可以通过实现`Filter`接口或者继承`OncePerRequestFilter`类来自定义过滤器,并通过`web.xml`配置文件或Spring的`@WebFilter`注解进行注册。 具体到文件`spring_mvc`,可能包含以下内容: 1. ...
public class XssFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ...
import org.springframework.web.filter.OncePerRequestFilter; public class SessionFilter extends OncePerRequestFilter { private String[] notFilter = new String[] { "login.html", "index.html" }; @...
<filter-name>cors</filter-name> <filter-class>cn.*.filter.CrossFilter</filter-class> </filter> ``` 三、结论 本文主要介绍了 SpringMVC AJAX 跨域请求处理方法实例详解,解决了 AJAX 跨域请求问题。使用 ...
import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet....
public class CharacterEncodingFilter extends OncePerRequestFilter { private String encoding; private boolean forceRequestEncoding = false; private boolean forceResponseEncoding = false; public ...
public class UrlRewriteFilter extends OncePerRequestFilter { // 省略具体实现,通常这个过滤器需要一个配置文件来定义重写规则 } ``` 以上五个过滤器涵盖了常见的Web开发需求,如缓存控制、登录验证、字符编码...
import org.springframework.web.filter.OncePerRequestFilter; public class MutilCharacterEncodingFilter extends OncePerRequestFilter { // ... 正则表达式匹配编码信息 ... // 在doFilterInternal方法中...
public class ServletRequestFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ...
public class CharacterEncodingFilter extends OncePerRequestFilter { @Nullable private String encoding; private boolean forceRequestEncoding; private boolean forceResponseEncoding; public ...