一 Filter过滤器(非前后端分离)
1.启动类添加@ServletComponentScan 进行扫描
2.创建一个类实现Filter 接口 同时添加过滤条件 @WebFilter(urlPatterns ="/api/*", filterName ="loginFilter") 代表/api/* 进行过滤。
init()容器加载的时候调用 doFilter()请求被拦截的时候进行调用 destroy()容器被销毁的时候被调用
二 Servlet3.0的注解原生Servlet(弃用)
1.启动类添加@ServletComponentScan 进行扫描
2.添加引用 @WebServlet
三 Servlet3.0的注解原生Listener监听器实战
常用的监听器
servletContextListener 资源加载(db、redis、开线程)
httpSessionListener
servletRequestListener 统计
必须启动类添加@ServletComponentScan,监听器加@WebListener
过滤器与监听器的顺序
contextInitialized(监听器--资源加载的时候被调用)-->init loginFilter(过滤器容器加载的时候调用)-->requestInitialized(监听器--统计开始)-->doFilter loginFilter(过滤器请求被拦截的时候进行调用)-->Controller-->requestDestroyed(监听器--统计结束)-->destroy loginFilter(过滤器容器被销毁的时候被调用)-->contextDestroyed(监听器资源销毁的时候被调用)。
四 SpringBoot2.X拦截器
1.启动类加@ServletComponentScan。
2.新建一个类实现HandlerInterceptor接口。HandlerInterceptor是拦截器的一个业务
注意:它包含preHandle(进入controller方法之前)、postHandle(调用完controller之后,视图渲染之前)、afterCompletion(整个完成之后,通常用于资源清理)
3.创建一个类实现WebMvcConfigurer 类前面加上备注@Configuration 告诉springboot 这是一个配置类 可进行拦截
过滤器与拦截器的执行顺序
过滤前 拦截前 执行 拦截后过滤完
过滤器只能执行一次 拦截器能执行n次
网友评论