Spring SpringBoot JavaConfig方式配置拦截器

xiaoxiao2021-02-28  39

一、先定义自己的拦截器

实现HandlerInterceptor 接口,重写preHandle(),postHandle(),afterCompletion()方法。

package com.hnms.demo.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Author : WangRui * Date : 2018/5/17/017 * Describe : */ public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setHeader("Access-Control-Allow-Origin","*"); System.out.println("在请求处理之前进行调用(Controller方法调用之前)"); return true;// 只有返回true才会继续向下执行,返回false取消当前请求 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { response.setHeader("Access-Control-Allow-Origin","*"); System.out.println(">>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(">>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)"); } }

二、定义配置类

创建一个配置类MyWebAppConfigurer继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。

package com.hnms.demo.interceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * Author : WangRui * Date : 2018/5/17/017 * Describe : */ @Configuration public class MyWebAppConfigurer extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { // addPathPatterns 用于添加拦截规则 // excludePathPatterns 配置某些路径不拦截 InterceptorRegistration addInterceptor = registry.addInterceptor(new MyInterceptor()); addInterceptor.excludePathPatterns("/test"); addInterceptor.addPathPatterns("/**"); //如果有多个拦截器 //InterceptorRegistration addInterceptor2 = registry.addInterceptor(new MyInterceptor2()); super.addInterceptors(registry); } }
我的公众号:Coding抠腚一个没有福报的社畜程序员。吐槽程序员生存,生活,职业发展。Java学习路线,经验,技术分享。技术问题交流探讨。超喜欢这里的,这里的老哥写代码都好sao的。
转载请注明原文地址: https://www.6miu.com/read-2622630.html

最新回复(0)