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

詳解SpringMVC中攔截器的概念及入門(mén)案例

 更新時(shí)間:2022年07月04日 09:36:24   作者:夏志121  
攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器的概念及入門(mén)案例,感興趣的可以嘗試一下

一、攔截器概念

攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行

作用:

在指定的方法調(diào)用前后執(zhí)行預(yù)先設(shè)定的代碼

阻止原始方法的執(zhí)行 

攔截器與過(guò)濾器區(qū)別 

歸屬不同:Filter屬于Servlet技術(shù),Interceptor屬于SpringMVC技術(shù)

攔截內(nèi)容不同:Filter對(duì)所有的訪問(wèn)進(jìn)行增強(qiáng),Interceptor僅針對(duì)SpringMVC的訪問(wèn)進(jìn)行增強(qiáng)

二、攔截器入門(mén)案例

1、聲明攔截器的bean,并實(shí)現(xiàn)HandlerInterceptor接口(注意:掃描加載bean)

@Component
//定義攔截器類(lèi),實(shí)現(xiàn)HandlerInterceptor接口
//注意當(dāng)前類(lèi)必須受Spring容器控制
public class ProjectInterceptor implements HandlerInterceptor {
    @Override
    //原始方法調(diào)用前執(zhí)行的內(nèi)容
    //返回值類(lèi)型可以攔截控制的執(zhí)行,true放行,false終止
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle...");
        return true;
    }
 
    @Override
    //原始方法調(diào)用后執(zhí)行的內(nèi)容
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle...");
    }
 
    @Override
    //原始方法調(diào)用完成后執(zhí)行的內(nèi)容
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }
}

2、定義配置類(lèi),繼承WebMvcConfigurationSupport,實(shí)現(xiàn)addInterceptor(注意掃描加載配置)

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
 
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        。。。
    }
}

3、添加攔截器并設(shè)定攔截的訪問(wèn)路徑,路徑可以通過(guò)可變參數(shù)設(shè)置多個(gè)

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Autowired
    private ProjectInterceptor projectInterceptor;
 
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        //配置攔截器
        registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");
    }
}

4、使用標(biāo)準(zhǔn)接口WebMvcConfigurer簡(jiǎn)化開(kāi)發(fā)(注意:侵入式較強(qiáng))

@Configuration
@ComponentScan({"com.itheima.controller"})
@EnableWebMvc
//實(shí)現(xiàn)WebMvcConfigurer接口可以簡(jiǎn)化開(kāi)發(fā),但具有一定的侵入性
public class SpringMvcConfig implements WebMvcConfigurer {
    @Autowired
    private ProjectInterceptor projectInterceptor;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置攔截器
        registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");
    }
}

攔截器執(zhí)行流程

preHandle() :該方法在控制器方法之前執(zhí)行,如果返回false,說(shuō)明攔截器不放行該請(qǐng)求,自己處理或者結(jié)束該請(qǐng)求。如果返回true,說(shuō)明攔截器放行該請(qǐng)求,由其它匹配的攔截器或者控制器繼續(xù)處理。

postHandle():該方法在控制器方法調(diào)用之后,且解析視圖之前執(zhí)行,可以通過(guò)此方法對(duì)請(qǐng)求域中的模型和視圖做出進(jìn)一步的修改。

afterCompletion():該方法會(huì)在整個(gè)請(qǐng)求完成,即視圖渲染結(jié)束之后執(zhí)行。

到此這篇關(guān)于詳解SpringMVC中攔截器的概念及入門(mén)案例的文章就介紹到這了,更多相關(guān)SpringMVC攔截器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java使用正則抓取網(wǎng)頁(yè)郵箱

    java使用正則抓取網(wǎng)頁(yè)郵箱

    這篇文章主要為大家詳細(xì)介紹了java使用正則抓取網(wǎng)頁(yè)郵箱的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 利用寶塔配置jdk環(huán)境的詳細(xì)圖文教程

    利用寶塔配置jdk環(huán)境的詳細(xì)圖文教程

    最近在寶塔面板上創(chuàng)建一個(gè)網(wǎng)站,為Java應(yīng)用程序提供運(yùn)行環(huán)境,所以下面這篇文章主要給大家介紹了關(guān)于利用寶塔配置jdk環(huán)境的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java中stream是什么及如何使用

    Java中stream是什么及如何使用

    在Java中,Stream(流)是一種用于操作集合(Collection)、數(shù)組等數(shù)據(jù)源的API,Stream的主要作用是進(jìn)行數(shù)據(jù)的轉(zhuǎn)換、篩選、聚合等操作,可以極大地簡(jiǎn)化對(duì)數(shù)據(jù)的處理,本文給大家介紹Java中stream是什么?有什么作用?如何使用?感興趣的朋友一起看看吧
    2023-10-10
  • java實(shí)現(xiàn)OpenGL ES紋理映射的方法

    java實(shí)現(xiàn)OpenGL ES紋理映射的方法

    這篇文章主要介紹了java實(shí)現(xiàn)OpenGL ES紋理映射的方法,以實(shí)例形式較為詳細(xì)的分析了紋理映射的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • Java漢字轉(zhuǎn)拼音pinyin4j用法詳解

    Java漢字轉(zhuǎn)拼音pinyin4j用法詳解

    這篇文章主要介紹了Java漢字轉(zhuǎn)拼音pinyin4j用法詳解,需要的朋友可以參考下
    2020-02-02
  • java字符串日期類(lèi)Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    java字符串日期類(lèi)Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    Java語(yǔ)言的Calendar(日歷),Date(日期),和DateFormat(日期格式)組成了Java標(biāo)準(zhǔn)的一個(gè)基本但是非常重要的部分,下面這篇文章主要給大家介紹了關(guān)于java字符串日期類(lèi)Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Shiro中session超時(shí)頁(yè)面跳轉(zhuǎn)的處理方式

    Shiro中session超時(shí)頁(yè)面跳轉(zhuǎn)的處理方式

    這篇文章主要介紹了Shiro中session超時(shí)頁(yè)面跳轉(zhuǎn)的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java多線程的常用創(chuàng)建方式總結(jié)

    Java多線程的常用創(chuàng)建方式總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java多線程的相關(guān)知識(shí),文章圍繞著Java多線程的常用創(chuàng)建方式展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot+隨機(jī)鹽值+雙重MD5實(shí)現(xiàn)加密登錄

    SpringBoot+隨機(jī)鹽值+雙重MD5實(shí)現(xiàn)加密登錄

    數(shù)據(jù)加密在很多項(xiàng)目上都可以用到,大部分都會(huì)采用MD5進(jìn)行加密,本文主要介紹了SpringBoot+隨機(jī)鹽值+雙重MD5實(shí)現(xiàn)加密登錄,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • MyBatis實(shí)現(xiàn)三級(jí)樹(shù)查詢(xún)的示例代碼

    MyBatis實(shí)現(xiàn)三級(jí)樹(shù)查詢(xún)的示例代碼

    在實(shí)際項(xiàng)目開(kāi)發(fā)中,樹(shù)形結(jié)構(gòu)的數(shù)據(jù)查詢(xún)是一個(gè)非常常見(jiàn)的需求,比如組織架構(gòu)、菜單管理、地區(qū)選擇等場(chǎng)景都需要處理樹(shù)形數(shù)據(jù),本文將詳細(xì)講解如何使用MyBatis實(shí)現(xiàn)三級(jí)樹(shù)形數(shù)據(jù)的查詢(xún),需要的朋友可以參考下
    2024-12-12

最新評(píng)論

栖霞市| 石泉县| 福建省| 黑龙江省| 澄江县| 秦皇岛市| 瓮安县| 开鲁县| 金阳县| 新竹市| 凉山| 彰武县| 瓦房店市| 台中县| 光泽县| 广昌县| 当涂县| 永善县| 晋江市| 新田县| 常山县| 栾川县| 诸城市| 木兰县| 那曲县| 乳源| 武邑县| 大姚县| 滦平县| 青河县| 安岳县| 吐鲁番市| 祁门县| 措勤县| 同仁县| 宝坻区| 平湖市| 扶绥县| 饶平县| 五华县| 镇宁|