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

SpringMVC中攔截器的實現(xiàn)

 更新時間:2022年01月27日 11:17:52   作者:北海冥魚未眠  
SpringMVC 中的 Interceptor 攔截器是非常重要和相當(dāng)有用的,它的主要作用是攔截指定的用戶請求,并進(jìn)行相應(yīng)的預(yù)處理與后處理,這篇文章主要介紹了SpringMVC的攔截器相關(guān)知識,需要的朋友可以參考下

SpringMVC 中的 Interceptor 攔截器是非常重要和相當(dāng)有用的,它的主要作用是攔截指定的用戶請求,并進(jìn)行相應(yīng)的預(yù)處理與后處理。
其攔截的時間點在“處理器映射器根據(jù)用戶提交的請求映射出了所要執(zhí)行的處理器類,并且也找到了要執(zhí)行該處理器類的處理器適配器,在處理器適配器執(zhí)行處理器之前”。
當(dāng)然,在處理器映射器映射出所要執(zhí)行的處理器類時,已經(jīng)將攔截器與處理器組合為了一個處理器執(zhí)行鏈,并返回給了中央調(diào)度器。

攔截器和過濾器很像,但是又有比較大的區(qū)別

過濾器是servlet規(guī)范的一部分,任何javaweb工具都能夠使用。
過濾器基于回調(diào)函數(shù)。
攔截器是spring的AOP思想的具體應(yīng)用,攔截器是基于反射機制。
攔截器是springmvc自己的,只有springmvc框架的工程才能使用。
攔截器只會攔截訪問的控制方法,對靜態(tài)資源,不走controller的資源是不用的。
攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器里注入一個service,可
以調(diào)用業(yè)務(wù)邏輯。

攔截器的實現(xiàn)

自定義攔截器,需要實現(xiàn) HandlerInterceptor 接口。而該接口中含有三個方法:
? preHandle(request,response, Object handler):
該方法在處理器方法執(zhí)行之前執(zhí)行。其返回值為 boolean,若為 true,則緊接著會執(zhí)行處理器方法,且會將 afterCompletion()方法放入到一個專門的方法棧中等待執(zhí)行。
? postHandle(request,response, Object handler,modelAndView):
該方法在處理器方法執(zhí)行之后執(zhí)行。處理器方法若最終未被執(zhí)行,則該方法不會執(zhí)行。
由于該方法是在處理器方法執(zhí)行完后執(zhí)行,且該方法參數(shù)中包含 ModelAndView,所以該方法可以修改處理器方法的處理結(jié)果數(shù)據(jù),且可以修改跳轉(zhuǎn)方向。
? afterCompletion(request,response, Object handler, Exception ex): 當(dāng) preHandle()方法返回 true 時,會將該方法放到專門的方法棧中,等到對請求進(jìn)行響應(yīng)的所有
工作完成之后才執(zhí)行該方法。即該方法是在中央調(diào)度器渲染(數(shù)據(jù)填充)了響應(yīng)頁面之后執(zhí)行的,此時對 ModelAndView 再操作也對響應(yīng)無濟(jì)于事。
afterCompletion 最后執(zhí)行的方法,清除資源,例如在 Controller 方法中加入數(shù)據(jù)

注冊攔截器:

package com.dongmu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Interceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("攔截器在處理器方法執(zhí)行前攔截。");
        return true;
    }
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("攔截器在處理器方法執(zhí)行后處理");
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("攔截器一定會執(zhí)行的方法");
}

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.dongmu.interceptor.Interceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

當(dāng)有多個攔截器時,形成攔截器鏈。攔截器鏈的執(zhí)行順序,與其注冊順序一致。需要再次強調(diào)一點的是,當(dāng)某一個攔截器的 preHandle()方法返回 true 并被執(zhí)行到時,會向一個專門的方法棧中放入該攔截器的 afterCompletion()方法。

注意:每次通過servlet,也就是處理器controller的請求都會經(jīng)過攔截器。(指定路徑的情況下)

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

相關(guān)文章

  • Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解

    Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解

    這篇文章主要為大家介紹了Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • springboot使用redis對單個對象進(jìn)行自動緩存更新刪除的實現(xiàn)

    springboot使用redis對單個對象進(jìn)行自動緩存更新刪除的實現(xiàn)

    本文主要介紹了springboot使用redis對單個對象進(jìn)行自動緩存更新刪除的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java如何通過反射機制獲取數(shù)據(jù)類對象的屬性及方法

    Java如何通過反射機制獲取數(shù)據(jù)類對象的屬性及方法

    文章介紹了如何使用Java反射機制獲取類對象的所有屬性及其對應(yīng)的get、set方法,以及如何通過反射機制實現(xiàn)類對象的實例化,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Hibernate是一種Java對象關(guān)系映射框架,支持一對多和多對多關(guān)系的映射。一對多關(guān)系可以使用集合屬性和單向/雙向關(guān)聯(lián)來映射,多對多關(guān)系可以使用集合屬性和中間表來映射。在映射過程中,需要注意級聯(lián)操作、延遲加載、中間表的處理等問題
    2023-04-04
  • java實現(xiàn)微信紅包 拼手氣紅包

    java實現(xiàn)微信紅包 拼手氣紅包

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)微信紅包,拼手氣紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 對dbunit進(jìn)行mybatis DAO層Excel單元測試(必看篇)

    對dbunit進(jìn)行mybatis DAO層Excel單元測試(必看篇)

    下面小編就為大家?guī)硪黄獙bunit進(jìn)行mybatis DAO層Excel單元測試(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Feign如何使用protobuf的類作為參數(shù)調(diào)用

    Feign如何使用protobuf的類作為參數(shù)調(diào)用

    這篇文章主要介紹了Feign如何使用protobuf的類作為參數(shù)調(diào)用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java基礎(chǔ)之Integer使用的注意事項及面試題

    Java基礎(chǔ)之Integer使用的注意事項及面試題

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之Integer使用注意事項及面試題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Java基礎(chǔ)之常用的命令行指令

    Java基礎(chǔ)之常用的命令行指令

    這篇文章主要介紹了Java基礎(chǔ)之常用的命令行指令,文中有非常詳細(xì)的圖文示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 基于struts2和hibernate實現(xiàn)登錄和注冊功能

    基于struts2和hibernate實現(xiàn)登錄和注冊功能

    這篇文章主要為大家詳細(xì)介紹了基于struts2和hibernate實現(xiàn)登錄和注冊功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

松桃| 云阳县| 阜平县| 偃师市| 社旗县| 吉安县| 神农架林区| 浏阳市| 鹤壁市| 兰考县| 曲阳县| 荔浦县| 甘泉县| 永兴县| 镇坪县| 潜山县| 中卫市| 富阳市| 揭阳市| 清涧县| 伽师县| 石台县| 右玉县| 扬中市| 肥乡县| 新沂市| 诸暨市| 碌曲县| 百色市| 邛崃市| 邻水| 板桥市| 南安市| 保定市| 四子王旗| 方山县| 晋中市| 巴东县| 清水河县| 临城县| 望奎县|