使用SpringBoot如何实现自定义过滤器与拦截器

  介绍

使用SpringBoot如何实现定义过滤器与拦截器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创建一个过滤器,实现javax.servlet。过滤器接口,并重写其中的init, doFilter,欺方法。

包com.example.filter;
  进口java.io.IOException;
  进口javax.servlet.Filter;
  进口javax.servlet.FilterChain;
  进口javax.servlet.FilterConfig;
  进口javax.servlet.ServletException;
  与javax . servlet . servletrequest进口;
  进口javax.servlet.ServletResponse;
  进口javax.servlet.annotation.WebFilter;/* *
  *实现javax.servlet.Filter,覆盖其三个方法
  * @author管理员
  *
  */@WebFilter (filterName=癱ustomFilter" urlpattern=?*”)
  公共类CustomFilter实现滤波器{
  
  @Override
  公共空间摧毁(){
  System.out.println (“CustomFilter过滤器销毁“);
  
  }
  
  @Override
  公共空间的doFilter (ServletRequest请求,ServletResponse响应FilterChain链)
  抛出IOException ServletException {
  System.out.println (“CustomFilter指定过滤器操作……”);//执行操作后必须的doFilter
  链。doFilter(请求、响应);
  }
  
  @Override
  公共空init (FilterConfig arg0)抛出ServletException {
  System.out.println (“CustomFilter初始化……“);
  }
  }
  

创建一个过滤器,实现ServletContextListener接口

包com.example.listener;
  进口javax.servlet.ServletContextEvent;
  进口javax.servlet.ServletContextListener;
  进口javax.servlet.annotation.WebListener;/* *
  *实现ServletContextListener,覆盖其两个方法
  * @author管理员
  *
  */@WebListener
  公共类CustomListener实现ServletContextListener {
  
  @Override
  公共空间contextDestroyed (ServletContextEvent servletContext) {
  System.out.println (“servletContext销毁……“);
  
  }
  
  @Override
  公共空间contextInitialized (ServletContextEvent servletContext) {
  servletContext System.out.println(“初始化……“);
  }
  
  }
  
  

创建一个会话监听器,监听会话的创建和销毁

包com.example.listener;
  进口javax.servlet.annotation.WebListener;
  进口javax.servlet.http.HttpSessionEvent;
  进口javax.servlet.http.HttpSessionListener;/* *
  *实现HttpSessionListener接口,监视会话的动态
  * @author管理员
  *
  */@WebListener
  公共类SessionListener实现HttpSessionListener {
  
  @Override
  公共空间sessionCreated (HttpSessionEvent会话){
  System.out.println(“会话创建成功……“);
  
  }
  
  @Override
  公共空间sessionDestroyed (HttpSessionEvent会话){
  System.out.println(“会话销毁……“);
  
  }
  
  }
  

步骤:

1,创建自己的拦截器实现HandlerInterceptor接口

2,创建自己的拦截器链,继承WebMvcConfigurerAdapter类,重写addInterceptors方法。

3,实例化自己的拦截器,并加入到拦截器链中。

拦截器一:

包com.example.Interceptor;
  进口javax.servlet.http.HttpServletRequest;
  进口javax.servlet.http.HttpServletResponse;
  进口org.springframework.web.servlet.HandlerInterceptor;
  进口org.springframework.web.servlet.ModelAndView;
  
  公共类CustomInterceptor实现HandlerInterceptor {
  
  @Override
  公共空间afterCompletion (HttpServletRequest请求,HttpServletResponse响应、对象对象,
  例外的例外)抛出异常{//在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作)
  System.out.println (“3。整个请求结束之后被调用……CustomInterceptor1……“);
  }
  
  @Override
  公共空postHandle (HttpServletRequest请求,HttpServletResponse响应、对象对象ModelAndView视图)
  抛出异常{//请求处理之后进行调用,但是在视图被渲染之前
  System.out.println (“2。请求处理之后进行调用,但是在视图被渲染之前……CustomInterceptor1……“);
  }
  
  @Override
  公共布尔preHandle (HttpServletRequest请求,HttpServletResponse响应对象对象){抛出异常//在请求处理之前进行调用
  System.out.println (“1。在请求处理之前进行调用……CustomInterceptor1……“);//只有返回真实才会继续向下执行,返回假取消当前请求
  返回true;
  }
  
  }
  
  

使用SpringBoot如何实现自定义过滤器与拦截器