首先创建一个类继承HandlerInterceptor:
package com.scihub.proxy.Utils; import com.scihub.proxy.entity.User; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class HandlerIntercepterConfig implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception{ System.out.println("自定义拦截器"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView modelAndView){ System.out.println("处理请求完成后视图渲染之前的处理操作"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) throws Exception { System.out.println("视图渲染之后的操作"); } }
然后创建一个配置类实现WebMvcConfiguration:
package com.scihub.proxy.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @SpringBootConfiguration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private HandlerInterceptor handlerInterceptor; /** * addPathPatterns 添加拦截规则 * excludePathPatterns 排除拦截规则 * @param registry */ public void addInterceptors(InterceptorRegistry registry) { //如果addPathPatterns被输入,进行拦截并跳转到上面的preHandle方法进行处理 registry.addInterceptor(handlerInterceptor).addPathPatterns("/**").excludePathPatterns("/"); } }