十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
一、概述
攔截器的使用場(chǎng)景越來越多,尤其是面向切片編程流行之后。那通常攔截器可以做什么呢?
之前我們?cè)贏gent介紹中,提到過統(tǒng)計(jì)函數(shù)的調(diào)用耗時(shí)。這個(gè)思路其實(shí)和AOP的環(huán)繞增強(qiáng)如出一轍。
那一般來說,場(chǎng)景如下:
以及其他等等。
二、Spring的攔截器
無論是SpringMVC或者SpringBoot中,關(guān)于攔截器不得不提:
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor { // 在目標(biāo)方法執(zhí)行前執(zhí)行 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } // 在目標(biāo)方法執(zhí)行后執(zhí)行,但在請(qǐng)求返回前,我們?nèi)匀豢梢詫?duì) ModelAndView進(jìn)行修改 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {} // 在請(qǐng)求已經(jīng)返回之后執(zhí)行 @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {} // 用來處理異步請(qǐng)求, 當(dāng)Controller中有異步請(qǐng)求方法的時(shí)候會(huì)觸發(fā)該方法 @Override public void afterConcurrentHandlingStarted( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {} }