springboot filter and interceptor

1.1  filter、interceptor

1.1.1    filter 过滤器

1.1.1.1  实现方法

init(FilterConfig paramFilterConfig) - 当容器初始化filter时调用,该方法在filter的生命周期只会被调用一次(单例)。

doFilter(ServletRequest request, ServletResponse response, FilterChain chain) – web容器每一次请求都会调用该方法。注意这里是通过容器的回调进行调用的。FilterChain用来调用下一个过滤器。

void destroy() - 当容器销毁Filter实例时调用该方法,可以在方法中销毁资源,该方法在Filter的生命周期只会被调用一次。

1.1.1.2             调用顺序

  HttpRequest —-> Filter —-> Servlet —-> Controller/Action/… —-> Filter —-> HttpResponse

1.1.2     interceptor 拦截器

1.1.2.1  实现方法

preHandle() - 在handler执行之前,返回boolean值,true表示继续执行,false为停止执行并返回。

postHandle() - 在处理程序执行之后,可以在返回之前对返回的结果进行修改

afterCompletion() - 在请求完全结束后调用,可以用来统计请求耗时等等

1.1.2.2 调用顺序

请求到达DispatcherServlet

DispatcherServlet发送至拦截器,执行preHandle

请求到达控制器

请求正常结束后执行postHandle,afterCompletion

请求异常结束则只执行afterCompletion

HttpRequest —-> DispactherServlet —-> HandlerInterceptor —->Controller—-> HandlerInterceptor —-> HttpResponse

1.1.3    过滤器拦截器对比

1.1.3.1 总体调用流程

  

  (图片来源 https://blog.csdn.net/hanziang1996/article/details/79655140

1.1.3.2  对比

  过滤器由servlet容器(tomcat、jetty…)通过回调的方式调用的(进入spring框架之前)

  拦截器是由spring框架的DispatcherServlet调用的,基于动态代理

  拦截器可以在方法调用前后调用,过滤器多了一种(可以在异常之后调用)

  过滤器依赖于servlet容器

拦截器依赖于spring容器

1.1.3.3    作用

两者的应用场景大致相同,可以做如下任务:

登录认证

请求记录(次数,时间,url)

mdc打印日志

l  过滤器依赖于servlet容器

l  拦截器依赖于spring容器

1.1.1.1             作用

两者的应用场景大致相同,可以做如下任务:

登录认证

请求记录(次数,时间,url)

mdc打印日志

原文地址:https://www.cnblogs.com/gc65/p/10087040.html

时间: 2024-11-10 21:06:50

springboot filter and interceptor的相关文章

Filter、Interceptor、Aspect 区别及实现

Fliter 过滤器 请求在到达Controller之前进行与返回去之后 调用 入参为 reuqest,response,chian,过滤器获取不了具体调用哪一个类,哪一个方法. 实现: 1.继承 Filter 接口 import java.io.IOException; import java.util.Date; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.Filter

非spring组件servlet、filter、interceptor中注入spring bean

问题:在filter和interceptor中经常需要调用Spring的bean,filter也是配置在web.xml中的,请问一下这样调用的话,filter中调用Spring的某个bean,这个bean一定存在吗?现在总是担心filter调用bean的时候,bean还没被实例化? 答案:因为spring bean.filter.interceptor加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出

servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor?对于这几个概念,本应是初学者就掌握的东东了,可惜本人基础学的不好,只能是现在补课.于是就有了这篇博客. 慢

Struts2 filter vs interceptor vs listener 抄来的!!!

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts2的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实

servlet/filter/listener/interceptor区别与联系(转)

由于最近两个月工作比较清闲,个人也比较"上进",利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor?对于这几个概念,本应是初学者就掌握的东东了,可惜本人基础学的不好,只能是现在补课.于是就有了这篇

servlet & filter & listener & interceptor

1.servlet url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面.它主要用来在业务处理之前进行控制. 2.filter url传来之后,检查之后,可保持原来的流程继续向下执行. filter可用来进行字符编码的过滤,检测用户是否登陆,禁止页面缓存等 3.servlet 与 filter 都是针对url之类的,而listener是针对对象的操作的.如: session的创建,Spring整合Struts,为Struts的action注入属性,web应用定时任务的实现,在线人数

过滤器和拦截器filter和Interceptor的区别

1.创建一个Filter过滤器只需两个步骤 创建Filter处理类 web.xml文件中配置Filter 2.Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request.Response)统一设置编码,简化操作:同时还可进行逻辑判断,如用户是否已经登陆.有没有权限访问该页面等等

【转】servlet/filter/listener/interceptor区别与联系

原文:https://www.cnblogs.com/doit8791/p/4209442.html 一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层.最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server.此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API.Servlet 的主要功能在

SpringBoot 拦截器(Interceptor)的使用

拦截器intercprot  和 过滤器 Filter 其实作用类似 在最开始接触java 使用struts2的时候,里面都是filter 后来springmvc时就用interceptor 没太在意过区别,反正就是起检查作用的, 仔细阅读 过滤器(filter)和拦截器(interceptor)的区别 后明白了不少 最重要的要记住他们的执行顺序: 先filter 后 interceptor 过滤前-拦截前-action执行-拦截后-过滤后 在了解上面的信息后,本文讲interceptor的使用