SpringMVC攔截器配置及運(yùn)行流程解析
1.與過(guò)濾器filter的區(qū)別

2.springMVC中攔截器的必須實(shí)現(xiàn)的三個(gè)方法:


3. 攔截器類的編寫(xiě):
package com.imooc.core;
import com.imooc.bean.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
//在業(yè)務(wù)處理器被調(diào)用前的方法,若是返回false則不會(huì)繼續(xù)進(jìn)入業(yè)務(wù)處理器
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
User user = (User)request.getSession().getAttribute("session_user");
if(user==null) {
response.sendRedirect(request.getContextPath()+"/login");
return false;//會(huì)終止所有的請(qǐng)求
}
return true;
}
//在業(yè)務(wù)處理器被調(diào)用后,dispatcher響應(yīng)客戶端前的方法,一般用于生成日志文件時(shí)調(diào)用
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
//dispatcher響應(yīng)客戶端后的方法,一般用于資源的清理
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
4.在spring的配置文件中注冊(cè)攔截器:
<!-- 攔截器的注冊(cè) -->
<mvc:interceptors>
<mvc:interceptor>
<!--**表示往后的所有子目錄也包括進(jìn)來(lái)-->
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有攔截中進(jìn)行排除,一般在通配符會(huì)有意義。-->
<!--即以下的方法不會(huì)被攔截-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<!--填寫(xiě)之前配置好的攔截器-->
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
注意:要是有多個(gè)攔截器執(zhí)行順序以spring的配置文件中的注冊(cè)攔截器順序執(zhí)行:
<!-- 攔截器的注冊(cè) -->
<mvc:interceptors>
<!--先注冊(cè)先執(zhí)行-->
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.imooc.core.LogInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有攔截中進(jìn)行排除,一般在通配符會(huì)有意義。-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
其次攔截器里的方法順序:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)學(xué)習(xí)筆記之?dāng)?shù)組詳解
這篇文章主要介紹了Java基礎(chǔ)學(xué)習(xí)筆記之?dāng)?shù)組,結(jié)合實(shí)例形式詳細(xì)分析了java的基本概念、定義、迭代、輸出、反轉(zhuǎn)、排序等常用操作技巧,需要的朋友可以參考下2019-08-08
詳解log4j-over-slf4j與slf4j-log4j12共存stack overflow異常分析
這篇文章主要介紹了詳解log4j-over-slf4j與slf4j-log4j12共存stack overflow異常分析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Java判斷數(shù)字位數(shù)的方法總結(jié)
本文給大家整理了Java判斷數(shù)字位數(shù)的兩種常用方法,對(duì)此有興趣的可以跟著小編一起學(xué)習(xí)下。2018-02-02
使用JPA自定義VO類型轉(zhuǎn)換(EntityUtils工具類)
這篇文章主要介紹了使用JPA自定義VO類型轉(zhuǎn)換(EntityUtils工具類),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
利用Spring MVC+Mybatis實(shí)現(xiàn)Mysql分頁(yè)數(shù)據(jù)查詢的過(guò)程詳解
這篇文章主要給大家介紹了關(guān)于利用Spring MVC+Mybatis實(shí)現(xiàn)Mysql分頁(yè)數(shù)據(jù)查詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別
下面小編就為大家?guī)?lái)一篇細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11

