SpringBoot(五)-- 整合Spring的攔截器


一、步驟

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 }
View Code

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM