一、步驟
1.創建我們自己的攔截器類並實現 HandlerInterceptor 接口。
2.創建一個Java類繼承WebMvcConfigurerAdapter,並重寫 addInterceptors 方法。
3.實例化我們自定義的攔截器,然后將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)。
二、實例
1.創建自定義攔截器並實現HandlerInterceptor 接口
1 package com.xsjt.interceptor; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 import org.springframework.web.servlet.HandlerInterceptor; 8 import org.springframework.web.servlet.ModelAndView; 9 10 /** 11 * ClassName:XbqInterceptor 12 * 自定義攔截器 13 * Date: 2017年11月6日 下午4:56:27 14 * @author Joe 15 * @version 16 * @since JDK 1.8 17 */ 18 public class XbqInterceptor implements HandlerInterceptor{ 19 20 private static final Logger logger = LoggerFactory.getLogger(XbqInterceptor.class); 21 22 @Override 23 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 24 logger.info(this.getClass().getName() + "<---xbq--->preHandle"); 25 return true; 26 } 27 28 @Override 29 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 30 logger.info(this.getClass().getName() + "<---xbq--->postHandle"); 31 } 32 33 @Override 34 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 35 logger.info(this.getClass().getName() + "<---xbq--->afterCompletion"); 36 } 37 }

1 package com.xsjt.interceptor; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 import org.springframework.web.servlet.HandlerInterceptor; 8 import org.springframework.web.servlet.ModelAndView; 9 10 /** 11 * ClassName:XbqInterceptor 12 * 自定義攔截器 13 * Date: 2017年11月6日 下午4:56:27 14 * @author Joe 15 * @version 16 * @since JDK 1.8 17 */ 18 public class JoeInterceptor implements HandlerInterceptor{ 19 20 private static final Logger logger = LoggerFactory.getLogger(JoeInterceptor.class); 21 22 @Override 23 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 24 logger.info(this.getClass().getName() + "<---joe--->preHandle"); 25 return true; 26 } 27 28 @Override 29 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 30 logger.info(this.getClass().getName() + "<---joe--->postHandle"); 31 } 32 33 @Override 34 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 35 logger.info(this.getClass().getName() + "<---joe--->afterCompletion"); 36 } 37 }
2.創建一個Java類繼承WebMvcConfigurerAdapter,並重寫 addInterceptors 方法
3.實例化我們自定義的攔截器,然后將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)
1 package com.xsjt.config; 2 3 import org.springframework.context.annotation.Configuration; 4 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 5 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 6 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 7 import com.xsjt.interceptor.JoeInterceptor; 8 import com.xsjt.interceptor.XbqInterceptor; 9 10 /** 11 * ClassName:SpringInterceptorRegister 12 * Spring 攔截器 注冊器 13 * Date: 2017年11月6日 下午4:58:32 14 * @author Joe 15 * @version 16 * @since JDK 1.8 17 */ 18 @Configuration 19 public class SpringInterceptorRegister extends WebMvcConfigurerAdapter{ 20 21 /** 22 * TODO 添加spring中的攔截器. 23 * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry) 24 */ 25 @Override 26 public void addInterceptors(InterceptorRegistry registry) { 27 // 攔截所有路徑 28 registry.addInterceptor(new XbqInterceptor()).addPathPatterns("/**"); 29 // 攔截/freemarker后路徑 30 registry.addInterceptor(new JoeInterceptor()).addPathPatterns("/freemarker/**"); 31 super.addInterceptors(registry); 32 } 33 34 /** 35 * TODO 注冊靜態文件的自定義映射路徑 36 * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addResourceHandlers(org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry) 37 */ 38 @Override 39 public void addResourceHandlers(ResourceHandlerRegistry registry) { 40 registry.addResourceHandler("/image/**").addResourceLocations("classpath:/image/"); 41 registry.addResourceHandler("/picture/**").addResourceLocations("file:D:/picture/"); 42 super.addResourceHandlers(registry); 43 } 44 }
4.源碼下載
https://gitee.com/xbq168/spring-boot-learn