欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

javaweb过滤器_JavaWeb技术(2):SpringMVC中的Filter

发布时间:2025/4/5 java 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 javaweb过滤器_JavaWeb技术(2):SpringMVC中的Filter 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Filter顾名思义就是过滤器,在JavaWeb体系中,他在服务端,卡在请求/响应与Servlet之间做一些操作:

过滤器相关的类的顶层接口如下,以下方法都由Web容器自动调用:

package

你可以看看这个Filter的实现类:

很多框架中的Filter都是实现自Servlet中的Filter

SpringMVC中的Filter在org.springframework.web.filter中:

其中有两个抽象类:GenericFilterBean和OncePerRequestFilter,org.springframework.web.filter中的其他类都是继承这两个类,还有一些其他常见的Filter比如CharacterEncodingFilter、CorsFilter和DelegatingFilterProxy等

首先是GenericFilterBean,它自己实现了init和destroy(后者为空实现)方法,doFilter交给子类实现,其中init负责将FilterConfig映射到BeanWrapper中,然后调用initFilterBean,不过这个方法实在子类中实现,目前实现这个方法的就只有DelegatingFilterProxy#initFilterBean,

DelegatingFilterProxy这个类的作用:

将Web体系中的Filter的doFilter()指向一个从spring上下文获取的bean,最终调用的是该bean的doFilter(),以后用的都是这个bean而不是原生Web体系的Filter,也正是因为是一个bean,所以才可以使用@AutoWired注入spring bean。将自己的Filter创建到Spring的上下文中,又能集成到web容器的filterChain上。

这就是DelegatingFilterProxy的作用,不懂得小伙伴可以看这篇文章:

反正我手长:GenericFilterBean与DelegatingFilterProxy​zhuanlan.zhihu.com

还有一个OncePerRequestFilter,这个类又是什么作用呢,来看看它的注释:

/**

意思是每个请求都会走这个过滤器,它的作用是通过更改request中的Filter状态,防止内部请求时多次调用Filter

总结

以上是生活随笔为你收集整理的javaweb过滤器_JavaWeb技术(2):SpringMVC中的Filter的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。