日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

拦截器---SpringMVC学习笔记(十四)

發(fā)布時間:2023/12/20 javascript 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拦截器---SpringMVC学习笔记(十四) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

定義

Spring Web MVC 的處理器攔截器類似于Servlet 開發(fā)中的過濾器Filter,用于對處理器進行預(yù)處理和后處理。

第一步:攔截器的定義

定義一個實現(xiàn)HandlerInterceptor接口的類:

package com.huihui.handlerIntercepter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;public class HandlerIntercepter1 implements HandlerInterceptor{//進入handler方法之前執(zhí)行//應(yīng)用場景:用于身份認(rèn)證和身份授權(quán)//比如身份認(rèn)證:如果認(rèn)證不通過表示當(dāng)前用戶沒有登陸,需要此方法攔截不再繼續(xù)往下執(zhí)行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception {return true;}//進入handler方法之后并且在返回modelAndView之前執(zhí)行//應(yīng)用場景從modelAndView出發(fā):將公用的模型數(shù)據(jù)(比如菜單導(dǎo)航)在這里傳到視圖,也可以在這里統(tǒng)一指定視圖@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response,Object obj, ModelAndView modelAndView) throws Exception {}//執(zhí)行完成handler之后執(zhí)行//應(yīng)用場景:統(tǒng)一異常處理,統(tǒng)一日志處理@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object obj, Exception e)throws Exception {} }

第二步:攔截器配置

在springmvc.xml文件中配置攔截器。

第一種:針對某種mapping配置攔截器(比較少用)

<beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"><property name="interceptors"><list><ref bean="handlerInterceptor1"/><ref bean="handlerInterceptor2"/></list></property> </bean><bean id="handlerInterceptor1" class="springmvc.intercapter.HandlerInterceptor1"/><bean id="handlerInterceptor2" class="springmvc.intercapter.HandlerInterceptor2"/>

第二種:針對所有mapping配置全局?jǐn)r截器(常用)

<!--攔截器 --> <mvc:interceptors><!--多個攔截器,順序執(zhí)行 --><mvc:interceptor><!-- /**會攔截所有的url(包括url的子路徑)/* 會攔截所有的url(不包括url的子路徑)--><mvc:mapping path="/**"/><bean class="com.huihui.handlerIntercepter.HandlerIntercepter1"></bean></mvc:interceptor><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.huihui.handlerIntercepter.HandlerIntercepter2"></bean></mvc:interceptor> </mvc:interceptors>

第三步:測試攔截器

第一種測試:兩個攔截器都放行

也就是將兩個攔截器中的preHandle方法最后都return true。
運行流程:

總結(jié):
preHandle方法按攔截器配置的順序執(zhí)行,postHandle和afterCompletion方法按攔截器配置的逆向順序執(zhí)行。

第二種測試:攔截器1放行,攔截器2不放行

也就是將攔截器1的preHandle方法return true,攔截器2的preHandle方法return false。

運行流程:

總結(jié):
攔截器1放行,攔截器2 preHandle才會執(zhí)行。
攔截器2 preHandle不放行,攔截器2 postHandle和afterCompletion不會執(zhí)行。
只要有一個攔截器不放行,postHandle不會執(zhí)行。

第三種測試:攔截器1和攔截器2都不放行

也就是將攔截器1和攔截器2的preHandle方法都return false。

運行流程:

總結(jié):
攔截器1 preHandle不放行,postHandle和afterCompletion不會執(zhí)行。
攔截器1 preHandle不放行,攔截器2不執(zhí)行。

總結(jié)

以上是生活随笔為你收集整理的拦截器---SpringMVC学习笔记(十四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。