黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 SpringMVC攔截器詳解

SpringMVC攔截器詳解

更新時間:2021-07-05 15:55:07 來源:動力節(jié)點 瀏覽1231次

Spring MVC的攔截器(Interceptor)與Java Servlet的過濾器(Filter)類似,它主要用于攔截用戶的請求并做相應的處理,通常應用在權(quán)限驗證、記錄請求信息的日志、判斷用戶是否登錄等功能上。

攔截器的定義

在Spring MVC框架中定義一個攔截器需要對攔截器進行定義和配置,定義一個攔截器可以通過兩種方式:一種是通過實現(xiàn)HandlerInterceptor接口或繼承HandlerInterceptor接口的實現(xiàn)類來定義;另一種是通過實現(xiàn)WebRequestInterceptor接口或繼承WebRequestInterceptor接口的實現(xiàn)類來定義。

本節(jié)以實現(xiàn)HandlerInterceptor接口的定義方式為例講解自定義攔截器的使用方法。示例代碼如下:

package interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class TestInterceptor implements HandlerInterceptor {
    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("afterCompletion方法在控制器的處理請求方法執(zhí)行完成后執(zhí)行,即視圖渲染結(jié)束之后執(zhí)行");

    }

    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle方法在控制器的處理請求方法調(diào)用之后,解析視圖之前執(zhí)行");
    }

    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle方法在控制器的處理請求方法調(diào)用之后,解析視圖之前執(zhí)行");
        return false;
    }
}

在上述攔截器的定義中實現(xiàn)了HandlerInterceptor接口,并實現(xiàn)了接口中的3個方法。有關(guān)這3個方法的描述如下。

  • preHandle方法:該方法在控制器的處理請求方法前執(zhí)行,其返回值表示是否中斷后續(xù)操作,返回true表示繼續(xù)向下執(zhí)行,返回false表示中斷后續(xù)操作。
  • postHandle方法:該方法在控制器的處理請求方法調(diào)用之后、解析視圖之前執(zhí)行,可以通過此方法對請求域中的模型和視圖做進一步的修改。
  • afterCompletion方法:該方法在控制器的處理請求方法執(zhí)行完成后執(zhí)行,即視圖渲染結(jié)束后執(zhí)行,可以通過此方法實現(xiàn)一些資源清理、記錄日志信息等工作。

攔截器的配置

讓自定義的攔截器生效需要在Spring MVC的配置文件中進行配置,配置示例代碼如下:

<!-- 配置攔截器 -->
<mvc:interceptors>
    <!-- 配置一個全局攔截器,攔截所有請求 -->
    <bean class="interceptor.TestInterceptor" /> 
    <mvc:interceptor>
        <!-- 配置攔截器作用的路徑 -->
        <mvc:mapping path="/**" />
        <!-- 配置不需要攔截作用的路徑 -->
        <mvc:exclude-mapping path="" />
        <!-- 定義<mvc:interceptor>元素中,表示匹配指定路徑的請求才進行攔截 -->
        <bean class="interceptor.Interceptor1" />
    </mvc:interceptor>
    <mvc:interceptor>
        <!-- 配置攔截器作用的路徑 -->
        <mvc:mapping path="/gotoTest" />
        <!-- 定義在<mvc: interceptor>元素中,表示匹配指定路徑的請求才進行攔截 -->
        <bean class="interceptor.Interceptor2" />
    </mvc:interceptor>
</mvc:interceptors>

在上述示例代碼中,<mvc:interceptors> 元素用于配置一組攔截器,其子元素 <bean> 定義的是全局攔截器,即攔截所有的請求。

<mvc:interceptor> 元素中定義的是指定路徑的攔截器,其子元素 <mvc:mapping> 用于配置攔截器作用的路徑,該路徑在其屬性 path 中定義。

如上述示例代碼中,path 的屬性值“/**”表示攔截所有路徑,“/gotoTest”表示攔截所有以“/gotoTest”結(jié)尾的路徑。如果在請求路徑中包含不需要攔截的內(nèi)容,可以通過 <mvc:exclude-mapping> 子元素進行配置。

需要注意的是,<mvc:interceptor> 元素的子元素必須按照 <mvc:mapping.../>、<mvc:exclude-mapping.../>、<bean.../> 的順序配置。

以上就是動力節(jié)點小編介紹的"SpringMVC攔截器詳解",希望對大家有幫助,想了解更多可查看SpringMVC教程,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美二级 | 国产美女高清一级a毛片 | 国产一卡 | 久久狠色噜噜狠狠狠狠97 | 美女在线观看网站 | 好好的日视频www | 国产成人精品免费视频大全五级 | 亚洲视频一区网站 | 午夜精品久久久久久久久 | 欧美成人精品一级高清片 | 最近免费中文字幕大全高清10 | 成年香蕉大黄美女美女 | 日本欧美一级二级三级不卡 | 精品久久久久免费极品大片 | 成人国产在线视频在线观看 | 手机在线视频一区 | 精品女同一区二区三区免费播放 | 欧美视频在线播放 | 在线视频第一页 | 亚洲区色 | 日本久久综合 | 欧美日本成人 | 免费啪啪社区免费啪啪手机版 | 特黄特黄一级高清免费大片 | 欧美日韩亚洲国产精品 | 国产无遮挡又爽又色又刺激 | 曰批免费视频播放在线看片二 | 亚洲v天堂v手机在线观看 | 免费黄色短片 | 久久婷婷是五月综合色狠狠 | 免费观看无遮挡www的小视频 | 日韩欧| 美女黄色好大美女黄色 | 神马啪啪| 国产一级特黄高清免费大片dvd | 日本乱仑 | 日韩一区二区在线视频 | 国产精品高清在线 | 激情伊人网 | 黄h视频| 天天做天天爽爽快快 |