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

Java?SpringMVC實(shí)現(xiàn)自定義攔截器

 更新時(shí)間:2022年03月15日 16:00:02   作者:程序員阿紅  
這篇文章主要為大家詳細(xì)介紹了SpringMVC實(shí)現(xiàn)自定義攔截器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

SpringMVC實(shí)現(xiàn)自定義攔截器

1 攔截器(interceptor)的作用

Spring MVC 的攔截器類(lèi)似于 Servlet 開(kāi)發(fā)中的過(guò)濾器 Filter,用于對(duì)處理器進(jìn)行預(yù)處理和后處理。

將攔截器按一定的順序聯(lián)結(jié)成一條鏈,這條鏈稱(chēng)為攔截器鏈(InterceptorChain)。在訪(fǎng)問(wèn)被攔截的方法或字段時(shí),攔截器鏈中的攔截器就會(huì)按其之前定義的順序被調(diào)用。攔截器也是AOP思想的具體實(shí)現(xiàn)。

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

關(guān)于interceptor和filter的區(qū)別,如圖所示:

image-20220312175950052

3.實(shí)現(xiàn)過(guò)程

步驟分析:

1.創(chuàng)建攔截器類(lèi)實(shí)現(xiàn)HandlerInterceptor接口

2.配置攔截器

3.測(cè)試攔截器的攔截效果

3.1創(chuàng)建攔截器類(lèi)實(shí)現(xiàn)HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {
    /**
     *         preHandle: 在目標(biāo)方法執(zhí)行之前 進(jìn)行攔截   return false:不放行
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle1....");
        return true;
    }
    /**
     *       postHandle: 在目標(biāo)方法執(zhí)行之后,視圖對(duì)象返回之前,執(zhí)行的方法
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle1....");
    }
    /**
     *        afterCompletion:在流程都執(zhí)行完成后,執(zhí)行的方法
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion1....");
    }

}

3.2配置攔截器

<!--    配置攔截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--對(duì)哪些資源執(zhí)行攔截操作 path="/**"表示對(duì)controller層所有方法進(jìn)行攔截 -->
            <mvc:mapping path="/**" />
            <bean class="com.weihong.interceptor.MyInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

3.3測(cè)試攔截器的攔截效果

    @RequestMapping("/target")
    public String targetMethed(){
        System.out.println("目標(biāo)方法執(zhí)行了");
        return "interceptor";
    }

3.4編寫(xiě)jsp頁(yè)面

<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>success~~~~~~</h3>
    <% System.out.println("視圖執(zhí)行了....");%>
</body>
</html>

3.5測(cè)試結(jié)果

image-20220312181744982

4. 攔截器鏈

開(kāi)發(fā)中攔截器可以單獨(dú)使用,也可以同時(shí)使用多個(gè)攔截器形成一條攔截器鏈。開(kāi)發(fā)步驟和單個(gè)攔截器是一樣的,只不過(guò)注冊(cè)的時(shí)候注冊(cè)多個(gè),注意這里注冊(cè)的順序就代表攔截器執(zhí)行的順序。

同上,再編寫(xiě)一個(gè)MyHandlerInterceptor2操作,測(cè)試執(zhí)行順序:

<!--配置攔截器-->
<mvc:interceptors>
  <mvc:interceptor>
    <!--攔截器路徑配置-->
    <mvc:mapping path="/**"/>
    <!--自定義攔截器類(lèi)-->
    <bean class="com.lagou.interceptor.MyInterceptor1"></bean>
  </mvc:interceptor>
  <mvc:interceptor>
    <!--攔截器路徑配置-->
    <mvc:mapping path="/**"/>
    <!--自定義攔截器類(lèi)-->
    <bean class="com.lagou.interceptor.MyInterceptor2"></bean>
  </mvc:interceptor>
</mvc:interceptors>

5. 知識(shí)小結(jié)

攔截器中的方法說(shuō)明如下:

image-20220312181936076

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Java多線(xiàn)程之鎖的強(qiáng)化學(xué)習(xí)

    Java多線(xiàn)程之鎖的強(qiáng)化學(xué)習(xí)

    Java多線(xiàn)程的鎖都是基于對(duì)象的,Java中的每一個(gè)對(duì)象都可以作為一個(gè)鎖。這篇文章主要來(lái)通過(guò)一下示例為大家強(qiáng)化一下鎖的相關(guān)知識(shí)的掌握,希望對(duì)大家有所幫助
    2023-02-02
  • 通過(guò)JDK源碼分析關(guān)閉鉤子詳解

    通過(guò)JDK源碼分析關(guān)閉鉤子詳解

    一個(gè)簡(jiǎn)單的關(guān)閉鉤子,程序被中斷或者正常退出時(shí)會(huì)顯示 hook shutdown!非常的優(yōu)雅,有效,巧妙。那么這篇文章就來(lái)給大家介紹關(guān)于通過(guò)JDK源碼分析關(guān)閉鉤子的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒。
    2017-11-11
  • java 反射機(jī)制詳解及實(shí)例代碼

    java 反射機(jī)制詳解及實(shí)例代碼

    這篇文章主要介紹了java 反射機(jī)制詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Java 8新特性 內(nèi)建函數(shù)式接口詳解

    Java 8新特性 內(nèi)建函數(shù)式接口詳解

    這篇文章主要介紹了Java 8新特性 內(nèi)建函數(shù)式接口詳解的相關(guān)資料,這里主要介紹4個(gè)基本函數(shù)式接口,需要的朋友可以參考下
    2016-12-12
  • Java集合Set的簡(jiǎn)單使用解析

    Java集合Set的簡(jiǎn)單使用解析

    這篇文章主要介紹了Java集合Set的簡(jiǎn)單使用解析,Set接口是Collection的子接口,Set接口相較于Collection接口沒(méi)有提供額外的方法,Set 集合不允許包含相同的元素,如果試把兩個(gè)相同的元素加入同一個(gè) Set 集合中,則添加操作失敗,需要的朋友可以參考下
    2023-11-11
  • 詳解Java如何實(shí)現(xiàn)圖像灰度化

    詳解Java如何實(shí)現(xiàn)圖像灰度化

    這篇文章主要介紹了灰度化的幾種方法,以及如何使用Java實(shí)現(xiàn)灰度化。同時(shí)分析了網(wǎng)上一種常見(jiàn)卻并不妥當(dāng)?shù)腏ava灰度化實(shí)現(xiàn),以及證明了opencv的灰度化是使用“加權(quán)灰度化”法,下面一起來(lái)看看。
    2016-08-08
  • 詳解java中List中set方法和add方法的區(qū)別

    詳解java中List中set方法和add方法的區(qū)別

    本文主要介紹了詳解java中List中set方法和add方法的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • RocketMQ延遲消息超詳細(xì)講解

    RocketMQ延遲消息超詳細(xì)講解

    延時(shí)消息是指發(fā)送到 RocketMQ 后不會(huì)馬上被消費(fèi)者拉取到,而是等待固定的時(shí)間,才能被消費(fèi)者拉取到。延時(shí)消息的使用場(chǎng)景很多,比如電商場(chǎng)景下關(guān)閉超時(shí)未支付的訂單,某些場(chǎng)景下需要在固定時(shí)間后發(fā)送提示消息
    2023-02-02
  • java判斷請(qǐng)求是來(lái)自PC端還是手機(jī)端小技巧

    java判斷請(qǐng)求是來(lái)自PC端還是手機(jī)端小技巧

    這篇文章主要為大家介紹了java判斷請(qǐng)求是來(lái)自PC端還是手機(jī)端小技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Springboot整合Mybatis傳值的常用方式總結(jié)

    Springboot整合Mybatis傳值的常用方式總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Springboot的相關(guān)知識(shí),文章圍繞著Springboot整合Mybatis傳值的常用方式展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論