Spring MVC中自定義攔截器的實例講解
1. 引言
攔截器(Interceptor)實現(xiàn)對每一個請求處理前后進(jìn)行相關(guān)的業(yè)務(wù)處理,類似于Servlet的Filter。
我們可以讓普通的Bean實現(xiàn)HandlerIntercpetor接口或繼承HandlerInterceptorAdapter類來實現(xiàn)自定義攔截器。
通過重寫WebMvcConfigurerAdapter的addIntercetors方法來注冊一個計算每一次請求的處理時間的攔截器。
2. 自定義攔截器的實現(xiàn)
2.1 定義攔截器
新建LogInterceptor類,并繼承HandlerInterceptorAdapter類,重寫preHandle、postHandle這兩個方法。
1.preHandle方法表示在請求發(fā)生前執(zhí)行,內(nèi)容如下:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setAttribute("begin", System.currentTimeMillis()); return true; }
2.postHandle方法表示在請求完成后執(zhí)行,內(nèi)容如下:
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { long begin = (long)request.getAttribute("begin"); request.removeAttribute("begin"); long end = System.currentTimeMillis(); System.out.println("本次請求消耗時間為:"+new Long(end-begin)+"ms"); }
2.2 配置攔截器
2.2.1 使用xml配置
1.在配置文件中添加支持MVC的schema
xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
2.使用mvc:interceptors標(biāo)簽聲明攔截器
<mvc:interceptors> <!-- 使用bean定義一個Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請求 --> <bean class="org.aming.demo.springmvc.interceptor.LogInterceptor"/> <mvc:interceptor> <mvc:mapping path="${指定的URL}"/> <!-- 定義在mvc:interceptor下面的表示是對特定的請求才進(jìn)行攔截的 --> <bean class="${其他攔截器}"/> </mvc:interceptor> </mvc:interceptors>
說明:沒有測試過!?。?/span>
2.2.2 使用JavaConfig配置
3.配置攔截器的Bean
@Bean public LogInterceptor logInterceptor() { return new LogInterceptor(); }
4.重寫addInterceptors方法,注冊攔截器
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(logInterceptor()); }
說明:配置類需要繼承WebMvcConfigurerAdapter類
3. 運(yùn)行結(jié)果
以上這篇Spring MVC中自定義攔截器的實例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java 8中的Lambda表達(dá)式實現(xiàn)工廠模式
這篇文章主要給大家介紹了使用Java 8中的Lambda表達(dá)式實現(xiàn)工廠模式的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04Java行為型設(shè)計模式之外觀設(shè)計模式詳解
外觀模式為多個復(fù)雜的子系統(tǒng),提供了一個一致的界面,使得調(diào)用端只和這個接口發(fā)生調(diào)用,而無須關(guān)系這個子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下2022-11-11Spring Cloud Alibaba Nacos Config進(jìn)階使用
這篇文章主要介紹了Spring Cloud Alibaba Nacos Config進(jìn)階使用,文中使用企業(yè)案例,圖文并茂的展示了Nacos Config的使用,感興趣的小伙伴可以看一看2021-08-08