最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot的攔截器簡單使用示例代碼

 更新時(shí)間:2017年04月24日 14:29:17   作者:牛頭人  
這篇文章主要介紹了spring boot的攔截器簡單使用實(shí)例代碼,需要的的朋友參考下吧

1.spring boot攔截器默認(rèn)有:

HandlerInterceptorAdapter
AbstractHandlerMapping
UserRoleAuthorizationInterceptor
LocaleChangeInterceptor
ThemeChangeInterceptor 

其中 LocaleChangeInterceptor 和 ThemeChangeInterceptor 比較常用。

2.實(shí)現(xiàn)自定義攔截器只需要3步:

1)、創(chuàng)建我們自己的攔截器類并實(shí)現(xiàn) HandlerInterceptor 接口。

2)、創(chuàng)建一個(gè)Java類繼承WebMvcConfigurerAdapter,并重寫 addInterceptors 方法。

3)、實(shí)例化我們自定義的攔截器,然后將對像手動(dòng)添加到攔截器鏈中(在addInterceptors方法中添加)。

3.代碼示例

IndexInterceptor.java類代碼:

package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor implements HandlerInterceptor{
  @Override
  public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor>>>>>>>在整個(gè)請求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對應(yīng)的視圖之后執(zhí)行(主要是用于進(jìn)行資源清理工作)");
  }
  @Override
  public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor>>>>>>>請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)");
  }
  @Override
  public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
     System.out.println(">>>IndexInterceptor>>>>>>>在請求處理之前進(jìn)行調(diào)用(Controller方法調(diào)用之前)");
     // 只有返回true才會(huì)繼續(xù)向下執(zhí)行,返回false取消當(dāng)前請求
     return true;
  }
}

IndexInterceptor2.java類代碼:

package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor2 implements HandlerInterceptor{
  @Override
  public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor2>>>>>>>在整個(gè)請求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對應(yīng)的視圖之后執(zhí)行(主要是用于進(jìn)行資源清理工作)");
  }
  @Override
  public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
      throws Exception {
    System.out.println(">>>IndexInterceptor2>>>>>>>請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)");
  }
  @Override
  public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
     System.out.println(">>>IndexInterceptor2>>>>>>>在請求處理之前進(jìn)行調(diào)用(Controller方法調(diào)用之前)");
     // 只有返回true才會(huì)繼續(xù)向下執(zhí)行,返回false取消當(dāng)前請求
     return false;
  }
}

SimpleWebAppConfigurer.java類代碼:

package com.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.interceptor.IndexInterceptor;
import com.example.interceptor.IndexInterceptor2;
//只要能被springboot掃描到即可
@Configuration
public class SimpleWebAppConfigurer extends WebMvcConfigurerAdapter{
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    // 多個(gè)攔截器組成一個(gè)攔截器鏈
    // addPathPatterns 用于添加攔截規(guī)則
    // excludePathPatterns 用戶排除攔截
    registry.addInterceptor(new IndexInterceptor()).addPathPatterns("/**");
    registry.addInterceptor(new IndexInterceptor2()).addPathPatterns("/**");
    super.addInterceptors(registry);
  }
}

4.攔截器解析說明

preHandle**:預(yù)處理回調(diào)方法,實(shí)現(xiàn)處理器的預(yù)處理(如登錄檢查),第三個(gè)參數(shù)為響應(yīng)的處理器(如我們上一章的Controller實(shí)現(xiàn));

返回值:true表示繼續(xù)流程(如調(diào)用下一個(gè)攔截器或處理器);

false表示流程中斷(如登錄檢查失?。粫?huì)繼續(xù)調(diào)用其他的攔截器或處理器,此時(shí)我們需要通過response來產(chǎn)生響應(yīng);

postHandle**:后處理回調(diào)方法,實(shí)現(xiàn)處理器的后處理(但在渲染視圖之前),此時(shí)我們可以通過modelAndView(模型和視圖對象)對模型數(shù)據(jù)進(jìn)行處理或?qū)σ晥D進(jìn)行處理,modelAndView也可能為null。

afterCompletion**:整個(gè)請求處理完畢回調(diào)方法,即在視圖渲染完畢時(shí)回調(diào),如性能監(jiān)控中我們可以在此記錄結(jié)束時(shí)間并輸出消耗時(shí)間,還可以進(jìn)行一些資源清理,類似于try-catch-finally中的finally,但僅調(diào)用處理器執(zhí)行鏈中preHandle返回true的攔截器的afterCompletion**。

以上所述是小編給大家介紹的spring boot的攔截器簡單使用淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 關(guān)于springboot中對sqlSessionFactoryBean的自定義

    關(guān)于springboot中對sqlSessionFactoryBean的自定義

    這篇文章主要介紹了springboot中對sqlSessionFactoryBean的自定義方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring控制Bean加載順序的操作方法

    Spring控制Bean加載順序的操作方法

    正常情況下,Spring 容器加載 Bean 的順序是不確定的,那么我們?nèi)绻枰错樞蚣虞d Bean 時(shí)應(yīng)如何操作?本文將詳細(xì)講述我們?nèi)绾尾拍芸刂?nbsp;Bean 的加載順序,需要的朋友可以參考下
    2024-05-05
  • Java中實(shí)現(xiàn)OCR識別讀取圖片中的文字

    Java中實(shí)現(xiàn)OCR識別讀取圖片中的文字

    圖片內(nèi)容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具,本文將介紹如何在Java中實(shí)現(xiàn)OCR識別讀取圖片中的文字,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Mybatis中Mapper標(biāo)簽總結(jié)大全

    Mybatis中Mapper標(biāo)簽總結(jié)大全

    這篇文章主要介紹了Mybatis中Mapper標(biāo)簽總結(jié)大全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java如何使用httpclient檢測url狀態(tài)及鏈接是否能打開

    Java如何使用httpclient檢測url狀態(tài)及鏈接是否能打開

    這篇文章主要介紹了Java如何使用httpclient檢測url狀態(tài)及鏈接是否能打開,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • nexus私服啟動(dòng)不了問題及解決

    nexus私服啟動(dòng)不了問題及解決

    這篇文章主要介紹了nexus私服啟動(dòng)不了問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • spring cloud gateway如何獲取請求的真實(shí)地址

    spring cloud gateway如何獲取請求的真實(shí)地址

    這篇文章主要介紹了spring cloud gateway如何獲取請求的真實(shí)地址問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解Java如何在CompletableFuture中實(shí)現(xiàn)日志記錄

    詳解Java如何在CompletableFuture中實(shí)現(xiàn)日志記錄

    這篇文章主要為大家詳細(xì)介紹了一種slf4j自帶的MDC類,來記錄完整的請求日志,和在CompletableFuture異步線程中如何保留鏈路id,需要的可以參考一下
    2023-04-04
  • Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法示例

    Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法,涉及java針對圖片的運(yùn)算與轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Maven中resources標(biāo)簽的用法詳解

    Maven中resources標(biāo)簽的用法詳解

    本文主要介紹了Maven中resources標(biāo)簽的用法詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

宿州市| 通化市| 铁岭市| 漾濞| 临沧市| 公主岭市| 康乐县| 扶绥县| 大埔区| 定襄县| 教育| 麻江县| 屯昌县| 定陶县| 闻喜县| 瓮安县| 荔浦县| 乌拉特前旗| 乌拉特中旗| 丘北县| 惠安县| 三原县| 望江县| 岳西县| 巴中市| 河曲县| 尉氏县| 萨迦县| 孝义市| 永新县| 浑源县| 微山县| 合作市| 阳城县| 东阳市| 普格县| 海晏县| 南通市| 炎陵县| 新竹县| 汕头市|