SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、攔截器簡介
1、攔截器定義
攔截器,請求的接口被訪問之前,進行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實現策略。 攔截器主要用來按照指定規則拒絕請求。
2、攔截器中應用
Token令牌驗證
請求數據校驗
用戶權限校驗
放行指定接口 二、SpringBoot2.0攔截器用法
1、編寫兩個攔截器
自定義類實現HandlerInterceptor接口
1)OneInterceptor 攔截器
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;
/*** 攔截器一*/
public class OneInterceptor implements HandlerInterceptor {private static final Logger LOGGER= LoggerFactory.getLogger(OneInterceptor.class.getName());@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object o) throws Exception {String url =String.valueOf(request.getRequestURL()) ;LOGGER.info("1、url=="+url);// 放開攔截return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o, ModelAndView modelAndView) throws Exception {LOGGER.info("1、postHandle");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o, Exception e) throws Exception {LOGGER.info("1、afterCompletion");}
} 2)TwoInterceptor 攔截器
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;
/*** 攔截器二*/
public class TwoInterceptor implements HandlerInterceptor {private static final Logger LOGGER= LoggerFactory.getLogger(TwoInterceptor.class.getName());@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object o) throws Exception {String url =String.valueOf(request.getRequestURL()) ;LOGGER.info("2、url=="+url);// 放開攔截return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o, ModelAndView modelAndView) throws Exception {LOGGER.info("2、postHandle");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o, Exception e) throws Exception {LOGGER.info("2、afterCompletion");}
} 2、Web配置文件中注入攔截器
import com.boot.intercept.intercept.OneInterceptor;
import com.boot.intercept.intercept.TwoInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/*** Web配置文件*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {public void addInterceptors(InterceptorRegistry registry) {// 攔截所有路徑// 注冊自定義兩個攔截器registry.addInterceptor(new OneInterceptor()).addPathPatterns("/**");registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/**");}
} 3、編寫測試接口
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class InterceptController {@RequestMapping("/reqUrl")public String reqUrl (){return "success" ;}
} 4、訪問測試接口
日志輸出內容如下
intercept.OneInterceptor : 1、url==http://127.0.0.1:8005/reqUrl
intercept.TwoInterceptor : 2、url==http://127.0.0.1:8005/reqUrl
intercept.TwoInterceptor : 2、postHandle
intercept.OneInterceptor : 1、postHandle
intercept.TwoInterceptor : 2、afterCompletion
intercept.OneInterceptor : 1、afterCompletionla 攔截器的攔截順序,是按照Web配置文件中注入攔截器的順序執行的。
三、源代碼地址
GitHub:知了一笑
https://github.com/cicadasmile/spring-boot-base 轉載于:https://www.cnblogs.com/cicada-smile/p/11006490.html
總結
以上是生活随笔為你收集整理的SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随机映射
- 下一篇: Linux批量查找与替换