日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 拦截器

發布時間:2024/9/30 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 拦截器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(一)攔截器概述

1.1攔截器介紹

攔截器的作用類似于Servlet 中的Filter,都可以用于對處理器進行預處理和后處理。在Spring MVC 與Spring Boot 中使用攔截器一般是實現HandlerInterceptor 接口。

下面是去掉注釋后的源碼。HandlerInterceptor 接口提供了三個方法。下面分別對這三個方法作具體介紹。

public interface HandlerInterceptor {boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception;void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception;void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception;}

1.2攔截器中的三個方法

preHandle():這個方法可以實現處理器的預處理,也就是它會在handler 方法執行之前就開始執行。當返回值是true 時表示繼續執行,返回false 時則不會執行后續的攔截器或處理器。
作用:身份驗證,身份授權等。

postHandle():這個方法是后處理回調方法,也就是在控制器完成后(試圖渲染之前)執行。
作用:將公用的模型數據傳到視圖,也可以在這里統一指定視圖(菜單導航等)。

afterCompletion():這個方法是請求處理完畢后的回調方法,即在視圖渲染完畢時調用。
作用:進行統一的異常處理,日志處理等。

(二)在Spring Boot 中使用攔截器

2.1使用步驟

  • 寫一個攔截器實現HandlerInterceptor 接口。
  • 再寫一個類繼承WebMvcConfigurerAdapter 接口,重寫其中的addInterceptors() 方法。調用registry.addInterceptor() 方法注冊該攔截器。
  • 2.2簡單實現

    攔截器MyHandlerInterceptor 類

    public class MyHandlerInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {System.out.println("== preHandle ==");return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println("== postHandle ==");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("== afterCompletion ==");} }

    注冊攔截器WebConfiguration 類

    @SpringBootConfiguration public class WebConfiguration extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**");} }

    控制器TestController 類

    @RestController public class TestController {@GetMapping("/helllo")@ResponseBodypublic String test(){System.out.println("== Controller ==");return "Hello World!";} }

    PS:在使用攔截器的時候,要注意讓入口類掃描到該攔截器,入口類默認掃描的包是與入口類同級的包與其子包。
    在訪問”hello” 時,控制臺的輸出如下:

    參考博文
    http://jinnianshilongnian.iteye.com/blog/1670856/

    總結

    以上是生活随笔為你收集整理的Spring Boot 拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。