91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC中攔截器的實現是怎樣的

發布時間:2022-01-27 13:24:14 來源:億速云 閱讀:201 作者:柒染 欄目:開發技術

今天給大家介紹一下SpringMVC中攔截器的實現是怎樣的。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。

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

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

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

攔截器的實現

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

SpringMVC中攔截器的實現是怎樣的

SpringMVC中攔截器的實現是怎樣的

注冊攔截器:

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("攔截器在處理器方法執行前攔截。");
        return true;
    }
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("攔截器在處理器方法執行后處理");
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("攔截器一定會執行的方法");
}

SpringMVC中攔截器的實現是怎樣的

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

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

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

以上就是SpringMVC中攔截器的實現是怎樣的的全部內容了,更多與SpringMVC中攔截器的實現是怎樣的相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河曲县| 海兴县| 潮安县| 饶阳县| 新野县| 天柱县| 迭部县| 南皮县| 宁强县| 南岸区| 马鞍山市| 乾安县| 额济纳旗| 江华| 夏邑县| 佳木斯市| 武安市| 景洪市| 平顶山市| 平谷区| 河南省| 山阴县| 万盛区| 收藏| 扬中市| 四川省| 江门市| 富源县| 淮南市| 鄄城县| 浦县| 大方县| 靖边县| 阿尔山市| 洪湖市| 谷城县| 德兴市| 长兴县| 当阳市| 龙江县| 满城县|