HandlerInterceptor與WebRequestInterceptor的異同

相同點(diǎn)

兩個(gè)接口都可用于Contrller層請(qǐng)求攔截,接口中定義的方法作用也是一樣的。

//HandlerInterceptor
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception;
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception;
void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception;

//WebRequestInterceptor
void preHandle(WebRequest request) throws Exception;
void postHandle(WebRequest request, ModelMap model) throws Exception;
void afterCompletion(WebRequest request, Exception ex) throws Exception;

WebRequestInterceptor間接實(shí)現(xiàn)了HandlerInterceptor,只是他們之間使用WebRequestHandlerInterceptorAdapter適配器類聯(lián)系。

不同點(diǎn)

  1. WebRequestInterceptor的入?yún)ebRequest是包裝了HttpServletRequest 和HttpServletResponse的,通過WebRequest獲取Request中的信息更簡(jiǎn)便。
    2.WebRequestInterceptor的preHandle是沒有返回值的,說明該方法中的邏輯并不影響后續(xù)的方法執(zhí)行,所以這個(gè)接口實(shí)現(xiàn)就是為了獲取Request中的信息,或者預(yù)設(shè)一些參數(shù)供后續(xù)流程使用。
    3.HandlerInterceptor的功能更強(qiáng)大也更基礎(chǔ),可以在preHandle方法中就直接拒絕請(qǐng)求進(jìn)入controller方法。

使用場(chǎng)景

這個(gè)在上條已經(jīng)說了,如果想更方便獲取HttpServletRequest的信息就使用WebRequestInterceptor,當(dāng)然這些HandlerInterceptor都能做,只不過要多寫點(diǎn)代碼

如何配置

配置類繼承WebMvcConfigurationSupport或WebMvcConfigurerAdapter類,重寫addInterceptors,InterceptorRegistry實(shí)例就可以直接添加。
順便說下繼承WebMvcConfigurationSupport或WebMvcConfigurerAdapter的區(qū)別,繼承WebMvcConfigurationSupport不需要聲明@EnableWebMvc注解,繼承WebMvcConfigurerAdapter需要

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 姓名: 李小娜 [嵌牛導(dǎo)讀]: SpringMVC 中的Interceptor 攔截器也是相當(dāng)重要和相當(dāng)有用的,...
    n184閱讀 3,301評(píng)論 0 4
  • 1、Spring MVC請(qǐng)求流程 (1)初始化:(對(duì)DispatcherServlet和ContextLoderL...
    拾壹北閱讀 2,010評(píng)論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 鍥子 “原來你我之間只是一場(chǎng)夢(mèng)罷了,浮生夢(mèng)醉,呵~只是不知誰(shuí)是誰(shuí)的劫?誰(shuí)斷了準(zhǔn)的念?”——風(fēng)靈曦 “對(duì)不起,曦兒,...
    千花焚輪回殤閱讀 379評(píng)論 0 1
  • 今天和寶寶一起閱讀的《海盜船長(zhǎng)與海怪》,是屬于海盜船長(zhǎng)系列,很有意思的圖畫書。海盜們裝扮成海怪的樣子,會(huì)發(fā)生什么有...
    愛讀童書閱讀 355評(píng)論 0 0

友情鏈接更多精彩內(nèi)容