拦截器
-
自定义拦截器
@Component public class LoginInterceptor implements HandlerInterceptor { @Autowired private LoginService loginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Authorization"); SysUser sysUser = loginService.checkToken(token); if (sysUser == null){ Result result = Result.fail(ErrorCode.NO_LOGIN.getCode(), "未登录"); response.setContentType("application/json;charset=utf-8"); response.getWriter().print(JSON.toJSONString(result)); return false; } return true; } } -
注册拦截器,实现
implements WebMvcConfigurer@Configuration public class WebMVCConfig implements WebMvcConfigurer { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns("/test"); } }
过滤器
-
自定义filter
@WebFilter(filterName = "testFilter", urlPatterns = "/*") public class TestFilter implements Filter { @Override public void init(FilterConfig filterConfig){ } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("我是过滤器的执行方法,客户端向Servlet发送的请求被我拦截到了"); filterChain.doFilter(servletRequest, servletResponse); System.out.println("我是过滤器的执行方法,Servlet向客户端发送的响应被我拦截到了"); } // 在销毁Filter时自动调用 @Override public void destroy() { System.out.println("我是过滤器的被销毁时调用的方法!" ); } } -
主启动类加
@ServletComponentScan注解@SpringBootApplication @ServletComponentScan public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } }