欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot開發(fā)之攔截器實例

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

1 攔截器

列如常見的登錄攔截校驗:

1 HandlerInterceptor 接口

/**
 * 登錄檢查
 * 1、配置好攔截器要攔截哪些請求
 * 2、把這些配置放在容器中
 */
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 目標方法執(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攔截的請求路徑是{}",requestURI);
        // 登錄檢查邏輯
        HttpSession session = request.getSession();
        Object loginUser = session.getAttribute("loginUser");
        if(loginUser != null){
            // 放行
            return true;
        }
        // 攔截住。未登錄。跳轉到登錄頁
        request.setAttribute("msg","請先登錄");
//        re.sendRedirect("/");
        request.getRequestDispatcher("/").forward(request,response);
        return false;
    }
    /**
     * 目標方法執(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、編寫一個攔截器實現(xiàn)HandlerInterceptor接口
 * 2、攔截器注冊到容器中(實現(xiàn)WebMvcConfigurer的addInterceptors)
 * 3、指定攔截規(guī)則【如果是攔截所有,靜態(tài)資源也會被攔截】
 */
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")  // 所有請求都被攔截包括靜態(tài)資源
                .excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**"); // 放行的請求
    }
}

2 攔截器原理

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

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

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

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

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

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

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

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

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

相關文章

  • Java基礎之JDK1.8新特性lambda表達式詳解

    Java基礎之JDK1.8新特性lambda表達式詳解

    函數(shù)式接口有且僅有一個抽象方法,但是可以有多個非抽象方法的接口,函數(shù)式接口可以被隱式轉換為lambda表達式,這篇文章主要介紹了Java基礎之lambda表達式(JDK1.8新特性),需要的朋友可以參考下
    2023-08-08
  • ArrayList和JSONArray邊遍歷邊刪除到底該如何做

    ArrayList和JSONArray邊遍歷邊刪除到底該如何做

    這篇文章主要介紹了ArrayList和JSONArray邊遍歷邊刪除到底該如何做,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 利用Java手寫一個簡易的lombok的示例代碼

    利用Java手寫一個簡易的lombok的示例代碼

    Lombok是一款Java開發(fā)插件,使得Java開發(fā)者可以通過其定義的一系列注解來消除業(yè)務工程中冗長和繁瑣的代碼,尤其對于簡單的Java模型對象。本文就來手寫一個簡易的lombok,需要的可以參考一下
    2022-10-10
  • java使用緩沖流復制文件的方法

    java使用緩沖流復制文件的方法

    這篇文章主要為大家詳細介紹了java使用緩沖流復制文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java如何根據(jù)key值修改Hashmap中的value值

    Java如何根據(jù)key值修改Hashmap中的value值

    這篇文章主要介紹了Java如何根據(jù)key值修改Hashmap中的value值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java8中forEach語句循環(huán)一個List和Map

    Java8中forEach語句循環(huán)一個List和Map

    這篇文章主要給大家介紹了關于Java8中forEach語句循環(huán)一個List和Map的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • java利用注解實現(xiàn)簡單的excel數(shù)據(jù)讀取

    java利用注解實現(xiàn)簡單的excel數(shù)據(jù)讀取

    這篇文章主要為大家詳細介紹了java利用注解實現(xiàn)簡單的excel數(shù)據(jù)讀取,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java集合和數(shù)組的區(qū)別

    Java集合和數(shù)組的區(qū)別

    本文主要介紹了Java集合和數(shù)組的區(qū)別。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中的ProcessBuilder類詳細解析

    Java中的ProcessBuilder類詳細解析

    這篇文章主要介紹了Java中的ProcessBuilder類詳細解析,ProcessBuilder類是J2SE 1.5在java.lang中新添加的一個新類,此類用于創(chuàng)建操作系統(tǒng)進程,它提供一種啟動和管理進程的方法,需要的朋友可以參考下
    2024-01-01
  • Java中的while循環(huán)語句詳細講解

    Java中的while循環(huán)語句詳細講解

    這篇文章主要給大家介紹了關于Java中while循環(huán)語句的相關資料,while循環(huán)是一種在編程中常見的控制流語句,它允許代碼在特定條件下(通常是一個布爾表達式)重復執(zhí)行一段代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03

最新評論