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

SpringBoot開發(fā)之?dāng)r截器實(shí)例

 更新時(shí)間:2023年09月01日 10:16:22   作者:韓_師兄  
這篇文章主要介紹了SpringBoot開發(fā)之?dāng)r截器實(shí)例,Spring?Boot簡(jiǎn)介Spring?Boot發(fā)展史SpringBoot的魅力SpringBoot的優(yōu)點(diǎn)總結(jié)Spring?Boot是一個(gè)基于Spring框架的快速開發(fā)腳手架,它簡(jiǎn)化了Spring應(yīng)用的初始化和搭建過程,需要的朋友可以參考下

1 攔截器

列如常見的登錄攔截校驗(yàn):

1 HandlerInterceptor 接口

/**
 * 登錄檢查
 * 1、配置好攔截器要攔截哪些請(qǐng)求
 * 2、把這些配置放在容器中
 */
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 目標(biāo)方法執(zhí)行之前
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestURI = request.getRequestURI();
        log.info("preHandle攔截的請(qǐng)求路徑是{}",requestURI);
        // 登錄檢查邏輯
        HttpSession session = request.getSession();
        Object loginUser = session.getAttribute("loginUser");
        if(loginUser != null){
            // 放行
            return true;
        }
        // 攔截住。未登錄。跳轉(zhuǎn)到登錄頁
        request.setAttribute("msg","請(qǐng)先登錄");
//        re.sendRedirect("/");
        request.getRequestDispatcher("/").forward(request,response);
        return false;
    }
    /**
     * 目標(biāo)方法執(zhí)行完成以后
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle執(zhí)行{}",modelAndView);
    }
    /**
     * 頁面渲染以后
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("afterCompletion執(zhí)行異常{}",ex);
    }
}

2 配置攔截器

/**
 * 1、編寫一個(gè)攔截器實(shí)現(xiàn)HandlerInterceptor接口
 * 2、攔截器注冊(cè)到容器中(實(shí)現(xiàn)WebMvcConfigurer的addInterceptors)
 * 3、指定攔截規(guī)則【如果是攔截所有,靜態(tài)資源也會(huì)被攔截】
 */
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")  // 所有請(qǐng)求都被攔截包括靜態(tài)資源
                .excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**"); // 放行的請(qǐng)求
    }
}

2 攔截器原理

1 根據(jù)當(dāng)前請(qǐng)求,找到**HandlerExecutionChain【**可以處理請(qǐng)求的handler以及handler的所有 攔截器】

2 先來順序執(zhí)行 所有攔截器的 preHandle方法

  • 如果當(dāng)前攔截器prehandler返回為true。則執(zhí)行下一個(gè)攔截器的preHandle
  • 如果當(dāng)前攔截器返回為false。直接倒序執(zhí)行所有已經(jīng)執(zhí)行了的攔截器的 afterCompletion;

3 如果任何一個(gè)攔截器返回false。直接跳出不執(zhí)行目標(biāo)方法

4 所有攔截器都返回True。執(zhí)行目標(biāo)方法

5 倒序執(zhí)行所有攔截器的postHandle方法

6 前面的步驟有任何異常都會(huì)直接倒序觸發(fā) afterCompletion

7 頁面成功渲染完成以后,也會(huì)倒序觸發(fā) afterCompletion

到此這篇關(guān)于SpringBoot開發(fā)之?dāng)r截器詳解的文章就介紹到這了,更多相關(guān)SpringBoot攔截器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Java在線生成pdf文檔的代碼實(shí)現(xiàn)

    使用Java在線生成pdf文檔的代碼實(shí)現(xiàn)

    在實(shí)際的業(yè)務(wù)開發(fā)的時(shí)候,研發(fā)人員往往會(huì)碰到很多這樣的一些場(chǎng)景,需要提供相關(guān)的電子憑證信息給用戶,熟悉這塊業(yè)務(wù)的童鞋,一定特別清楚,目前最常用的解決方案通過一些技術(shù)手段生成對(duì)應(yīng)的PDF文件,下面小編給大家詳細(xì)說說
    2025-04-04
  • Java面向?qū)ο筮x擇題總結(jié)歸納

    Java面向?qū)ο筮x擇題總結(jié)歸納

    今天小編就為大家分享一篇關(guān)于Java面向?qū)ο筮x擇題總結(jié)歸納,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java使用keySet方法獲取Map集合中的元素

    Java使用keySet方法獲取Map集合中的元素

    這篇文章主要為大家詳細(xì)介紹了Java使用keySet方法獲取Map集合中的元素,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • SpringBoot中Excel處理完全指南分享

    SpringBoot中Excel處理完全指南分享

    這篇文章主要介紹了SpringBoot中Excel處理完全指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用

    Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用

    這篇文章主要介紹了Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • JavaWeb Session 會(huì)話管理實(shí)例詳解

    JavaWeb Session 會(huì)話管理實(shí)例詳解

    這篇文章主要介紹了JavaWeb Session 會(huì)話管理的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • list的4種遍歷方式(實(shí)例講解)

    list的4種遍歷方式(實(shí)例講解)

    下面小編就為大家?guī)硪黄猯ist的4種遍歷方式(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息

    SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息

    在一次項(xiàng)目開發(fā)中,使用到了Netty網(wǎng)絡(luò)應(yīng)用框架,以及MQTT進(jìn)行消息數(shù)據(jù)的收發(fā),這其中需要后臺(tái)來將獲取到的消息主動(dòng)推送給前端,所以本文記錄了SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息的操作,需要的朋友可以參考下
    2024-02-02
  • java實(shí)現(xiàn)門禁系統(tǒng)

    java實(shí)現(xiàn)門禁系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)門禁系統(tǒng)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解MyBatis直接執(zhí)行SQL查詢及數(shù)據(jù)批量插入

    詳解MyBatis直接執(zhí)行SQL查詢及數(shù)據(jù)批量插入

    這篇文章主要介紹了MyBatis直接執(zhí)行SQL查詢及數(shù)據(jù)批量插入的相關(guān)知識(shí),需要的朋友一起學(xué)習(xí)吧
    2016-01-01

最新評(píng)論

留坝县| 翁源县| 巴马| 福海县| 沙洋县| 贵州省| 都匀市| 嘉义县| 南木林县| 定襄县| 库尔勒市| 滁州市| 凌海市| 陆川县| 逊克县| 长白| 郁南县| 玉龙| 信阳市| 平泉县| 驻马店市| 曲麻莱县| 宣威市| 淮南市| 黄冈市| 兴义市| 永嘉县| 合江县| 揭西县| 康定县| 呼图壁县| 兴城市| 基隆市| 新竹县| 类乌齐县| 年辖:市辖区| 综艺| 葫芦岛市| 长乐市| 洮南市| 长宁区|