介绍
使用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如何实现自定义过滤器与拦截器