(六)SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

一  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次

你可能感兴趣的:((六)SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener)