Spring攔截器HandlerInterceptor接口代碼解析
Spring的HandlerMapping支持?jǐn)r截器,攔截器必須實(shí)現(xiàn)HandlerInterceptor接口,此接口里面有下面3中方法:
1.preHandle()處理器執(zhí)行前被調(diào)用,方法返回true標(biāo)識(shí)繼續(xù)調(diào)用其他攔截器或者處理器,返回false表示中斷流程,后續(xù)的攔截器和處理器不再執(zhí)行。
2.postHandle()處理器執(zhí)行后,視圖執(zhí)行前調(diào)用,此時(shí)而已通過(guò)ModelAndView對(duì)象對(duì)數(shù)據(jù)模型數(shù)據(jù)進(jìn)行處理或?qū)σ晥D進(jìn)行處理。
3.afterCompletion()整個(gè)過(guò)程結(jié)束后調(diào)用,比如性能監(jiān)控中我們?cè)谶@里可以記錄結(jié)束時(shí)間并輸出消耗的時(shí)間,也可以在這里寫對(duì)資源的清理,但是只有preHandle()返回true時(shí)才會(huì)執(zhí)行afterCompletion方法。
public class someInterceptor implements HandlerInterceptor{
public boolean preHandle(HttpServletRequest req,HttpServletResponse resp,Object handler)throws Exception{
//TODO 處理器執(zhí)行前被調(diào)用
return true;
}
publilc void postHandle(HttpServletRequest req,HttpServletResponse resp,Object handler,ModelAndView mv)throws Exception{
//TODO 處理器執(zhí)行后被調(diào)用
}
public void afterCompletion(HttpServletRequest req,HttpServletResponse resp,Object handler,Exception e)throws Exception{
//TODO全部執(zhí)行完成后調(diào)用
}
}
這個(gè)自定義的攔截器實(shí)現(xiàn)HandlerInterceptor接口就要實(shí)現(xiàn)接口里所有的方法,如果只想使用某一種方法,可以繼承HandlerInterceptorAdapter.
攔截器的配置
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/org/*"/> <mvc:exclude-mapping path="/login/*"/> <bean class="org.vipcpi.interceprot.someInterceptor"/> </mvc:interceptor> </mvc:interceptors>
總結(jié)
以上就是本文關(guān)于Spring攔截器HandlerInterceptor接口代碼解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能簡(jiǎn)單實(shí)例
這篇文章主要介紹了Java 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04
SpringBoot內(nèi)部調(diào)用事務(wù)不起作用問題的解決方案
這篇文章主要介紹了SpringBoot事務(wù)不起作用問題的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
關(guān)于spring項(xiàng)目中無(wú)法加載resources下文件問題及解決方法
在學(xué)習(xí)Spring過(guò)程中,TestContext框架試圖檢測(cè)一個(gè)默認(rèn)的XML資源位置,再resources下創(chuàng)建了一個(gè)com.example的文件夾,執(zhí)行時(shí),報(bào)錯(cuò),本文給大家介紹spring項(xiàng)目中無(wú)法加載resources下文件,感興趣的朋友跟隨小編一起看看吧2023-10-10
如何用Java?幾分鐘處理完?30?億個(gè)數(shù)據(jù)(項(xiàng)目難題)
現(xiàn)有一個(gè) 10G 文件的數(shù)據(jù),里面包含了 18-70 之間的整數(shù),分別表示 18-70 歲的人群數(shù)量統(tǒng)計(jì),今天小編通過(guò)本文給大家講解如何用Java?幾分鐘處理完?30?億個(gè)數(shù)據(jù),這個(gè)問題一直以來(lái)是項(xiàng)目難題,今天通過(guò)本文給大家詳細(xì)介紹下,感興趣的朋友一起看看吧2022-07-07
詳解Java利用同步塊synchronized()保證并發(fā)安全
這篇文章主要介紹了Java利用同步塊synchronized()保證并發(fā)安全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
解決@PostConstruct注解導(dǎo)致的程序無(wú)法啟動(dòng)(@PostConstruct的執(zhí)行)
這篇文章主要介紹了解決@PostConstruct注解導(dǎo)致的程序無(wú)法啟動(dòng)(@PostConstruct的執(zhí)行)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

