1、首先定義一個攔截器
package com.leyou.interceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author houChen 攔截器在攔截之前 中 與之后的處理事件 * @date 2020/5/14 20:25 * @Description: */ public class LoginInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { logger.debug("preHandle method is now running!"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { logger.debug("postHandle method is now running!"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { logger.debug("afterCompletion method is now running!"); } }
2、定義配置類,注冊攔截器
package com.leyou.config; import com.leyou.interceptor.LoginInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @author houChen * @date 2020/5/14 20:26 * @Description: */ @Configuration public class MvcConfig implements WebMvcConfigurer { /** * 通過@Bean注解,將我們定義的攔截器注冊到Spring容器 * @return */ @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } /** * 重寫接口中的addInterceptors方法,添加自定義攔截器 * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { // 通過registry來注冊攔截器,通過addPathPatterns來添加攔截路徑 registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/hello"); //這里表示對所有/hello的路徑進行攔截 } }
3、效果如下