亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

零基礎入門SpringMVC攔截器的配置與使用

 更新時間:2022年04月27日 09:58:00   作者:羨羨ˇ  
Spring?MVC?的攔截器(Interceptor)與?Java?Servlet?的過濾器(Filter)類似,它主要用于攔截用戶的請求并做相應的處理,通常應用在權限驗證、記錄請求信息的日志、判斷用戶是否登錄等功能上。本文將代碼演示和文字描述詳解攔截器的原理與使用

 在SpringMVC中 我們說到了攔截器 , 它會在映射處理器(HandleMapping)執(zhí)行時檢查我們
訪問的地址是否配置攔截器 , 在攔截器中實現(xiàn)一些功能

       SpringMVC 定義了攔截器接口 HandlerInterceptor該接口中定義了三個方法,這三個方法的調用時在 SpringMVC 框架內部完成的, 調用這個三個方法的時候,其參數(shù)的值也是從框架內部傳遞進來的。

首先我們來看第一個方法 : boolean preHandle()

      預處理方法,實現(xiàn)處理器(Controller層, 控制器)方法的預處理,就是在處理器方法執(zhí)行之前這個方法會被行,相當于攔截了處理器方法,框架會傳遞請求和響應對象給該方法,第三個參數(shù)為被攔截的處理器方法。如果 preHandle 方法返回 true 表示繼續(xù)流程(如調用下一個攔截器或處理器方法),返回 false 表示流程中斷,不會繼續(xù)調用其他的攔截器或處理器方法,此時我們需要通過 response 來產生響應;

         意思就是說呢 , 當請求到達我們控制層方法時, 會先進入這個方法中, 根據(jù)preHandle() 方法的

返回結果(true 和 false) 來決定下一步如何執(zhí)行

      后兩個方法 : void postHandle()     afterCompletion()

      首先第一個方法是控制層方法執(zhí)行后會執(zhí)行, 第二個方法時整個請求結束后執(zhí)行, 因為版本原因, 這兩個方法的使用頻率較低, 所以這里我們做一個了解即可

      接著我們去搭建一個攔截器看看到底是怎么一回事

//自己編寫一個類PreInterceptor 實現(xiàn) HandlerInterceptor接口 , 重寫preHandle方法
public class PreInterceptor implements HandlerInterceptor {
    //此方法返回true ,請求才能順利到達相應的處理方法中,否則會被攔截
    @Override
    public boolean preHandle(HttpServletRequest request, 
            HttpServletResponse response, Object handler) throws Exception {
        //第三個參數(shù)為目標控制器對象
        HttpSession session= request.getSession();
        //判斷信息是否有效
        Admin admin = (Admin) session.getAttribute("admin");
        if (admin==null){
            response.getWriter().print(202);
            return false;
        }else {
            return true;
        }
    }
}

      接著需要去配置文件中配置攔截器

<!--配置攔截器-->
<mvc:interceptors>
    <mvc:interceptor>
        <!--所有請求都進入攔截器-->
        <mvc:mapping path="/**"/>
        <!--指定哪些請求不進入攔截器-->
        <mvc:exclude-mapping path="/login/login"/>
        <mvc:exclude-mapping path="/css/**"/>
        <mvc:exclude-mapping path="/images/**"/>
        <mvc:exclude-mapping path="/js/**"/>
        <mvc:exclude-mapping path="/**.html"/>
        <!--攔截器實現(xiàn)類-->
        <bean id="login" class="com.ff.ssm.util.PreInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

這里我們以后端登錄 的控制器為例

@RestController
@RequestMapping(value = "/login")
public class LoginController {
    @Autowired
    LoginService loginService;
    @PostMapping(value = "/login")
    public CommonResult adminLogin(Admin admin, HttpSession session){
        CommonResult commonResult;
        try {
            Admin admin1 = loginService.login(admin);
            if(admin1==null){
                commonResult=new CommonResult(201,"賬號或密碼錯誤",admin1);
            }else  {
                session.setAttribute("admin",admin1);
                commonResult=new CommonResult(200,"登錄成功",admin1);
            }
        }catch (Exception e){
            commonResult=new CommonResult(500,"登錄失敗","");
        }
        return commonResult;
    }
}

         如上, 前端發(fā)起了登錄請求 , 我們配置了攔截器, 會先進入攔截器 , 根據(jù) preHandle() 方法決定

是否可以進入到我們具體的登錄方法中 

      上述控制器例子是將用戶的信息存入了session中 , 我們每次接受前端的請求時, 在攔截器中判斷用戶的信息是否還是有效的 , 有效則放行, 無效則攔截 , 所以前提是我們的登錄請求肯定是不能被攔截的, 因為這時候沒有登錄, 用戶信息為 null ,所以上面我們配置了不攔截登錄請求, 也不去攔截那些請求頁面

      以上就是SpringMVC中攔截器的具體功能和實現(xiàn) , 感謝閱讀

到此這篇關于零基礎入門SpringMVC攔截器的配置與使用的文章就介紹到這了,更多相關SpringMVC攔截器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot2.0以上調度器配置線程池的實現(xiàn)

    springboot2.0以上調度器配置線程池的實現(xiàn)

    這篇文章主要介紹了springboot2.0以上調度器配置線程池的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Java將GeoHash轉化為對應的經(jīng)緯度坐標實例代碼

    Java將GeoHash轉化為對應的經(jīng)緯度坐標實例代碼

    這篇文章主要介紹了Java實現(xiàn)將GeoHash轉化為對應的經(jīng)緯度坐標的相關資料,需要的朋友可以參考下
    2016-01-01
  • 示例解析java面向對象編程封裝與訪問控制

    示例解析java面向對象編程封裝與訪問控制

    這篇文章主要為大家介紹了java封裝與訪問控制的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java Mybatis框架多表操作與注解開發(fā)詳解分析

    Java Mybatis框架多表操作與注解開發(fā)詳解分析

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數(shù)和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄
    2021-10-10
  • java實現(xiàn)合并單元格的同時并導出excel示例

    java實現(xiàn)合并單元格的同時并導出excel示例

    這篇文章主要給大家介紹了關于java實現(xiàn)合并單元格的同時并導出excel的相關資料,文中先進行了簡單的介紹,之后給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 淺談Spring Cloud中的API網(wǎng)關服務Zuul

    淺談Spring Cloud中的API網(wǎng)關服務Zuul

    這篇文章主要介紹了淺談Spring Cloud中的API網(wǎng)關服務Zuul,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot項目實用功能之實現(xiàn)自定義參數(shù)解析器

    SpringBoot項目實用功能之實現(xiàn)自定義參數(shù)解析器

    這篇文章主要介紹了SpringBoot項目實用功能之實現(xiàn)自定義參數(shù)解析器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java基礎詳解之面向對象的那些事兒

    Java基礎詳解之面向對象的那些事兒

    這篇文章主要介紹了Java基礎之面向對象那些事兒,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • MyBatis自定義resultMap三種映射關系示例詳解

    MyBatis自定義resultMap三種映射關系示例詳解

    這篇文章主要介紹了MyBatis自定義resultMap三種映射關系,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解Java-Jackson使用

    詳解Java-Jackson使用

    這篇文章主要介紹了Java-Jackson使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論