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)文章
Mybatis-Plus實(shí)體類注解方法與mapper層和service層的CRUD方法
CRUD是指在做計(jì)算處理時(shí)的增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫(xiě)。主要被用在描述軟件系統(tǒng)中DataBase或者持久層的基本操作功能,下面讓我們一起看看吧2022-03-03Java使用Condition實(shí)現(xiàn)精準(zhǔn)喚醒線程詳解
這篇文章主要為大家詳細(xì)介紹了Java如何使用Condition實(shí)現(xiàn)精準(zhǔn)喚醒線程效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-02-02詳解設(shè)計(jì)模式在Spring中的應(yīng)用(9種)
這篇文章主要介紹了詳解設(shè)計(jì)模式在Spring中的應(yīng)用(9種),詳細(xì)的介紹了這9種模式在項(xiàng)目中的應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2019-04-04Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組
這篇文章主要介紹了Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼)
這篇文章主要介紹了Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06通過(guò)自定制LogManager實(shí)現(xiàn)程序完全自定義的logger
本章主要闡述怎么完全定制化LogManager來(lái)實(shí)現(xiàn)應(yīng)用程序完全自定制的logger,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03springboot+Vue實(shí)現(xiàn)分頁(yè)的示例代碼
本文主要介紹了springboot+Vue實(shí)現(xiàn)分頁(yè)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06SpringBoot配置Redis實(shí)現(xiàn)保存獲取和刪除數(shù)據(jù)
本文主要介紹了SpringBoot配置Redis實(shí)現(xiàn)保存獲取和刪除數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06