SpringMVC框架 |Interceptor攔截器的使用


一、攔截器介紹

SpringMVC提供了攔截器機制,允許在目標方法允許之前或之後進行一些其他處理。

SpringMVC提供的攔截器是一個接口HandlerInterceptor

在這裏插入圖片描述

  • preHandle:在目標方法前調用;返回true,(chain.doFilter)放行;返回false不放行。
  • postHandle:在目標方法調用之後運行。
  • afterCompletion:在請求整個完成(來到目標頁面)之後運行,即資源響應之後。(注意:afterCompletion類似於finally,總是會執行)

二、攔截器的使用步驟

1.實現HandlerInterceptor接口

  • 使用攔截器需要實現HandlerInterceptor接口,重寫其中的方法。
public class MyFirstInterceptor implements HandlerInterceptor {

	/**
	 * 目標方法運行之前
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("MyFirstInterceptor...preHandle");
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("MyFirstInterceptor...postHandle");

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("MyFirstInterceptor...afterCompletion");

	}

}

2.配置攔截器

攔截所有請求

	<mvc:interceptors>
		<bean class="com.gql.controller.MyFirstInterceptor"></bean>
	</mvc:interceptors>

攔截指定請求

		<mvc:interceptor>
			<mvc:mapping path="/test01"/>
			<bean class="com.gql.controller.MyFirstInterceptor"></bean>
		</mvc:interceptor>

三、攔截器的執行順序

單攔截器的執行順序

在這裏插入圖片描述
如上圖,假設在前端頁面發送請求,經過處理器後返回到響應頁面,在配置好單個## 多攔截器的執行順序

在這裏插入圖片描述

如上圖,假設在前端頁面發送請求,經過處理器後返回到響應頁面,在配置好兩個攔截器的情況下,整個流程執行結果Console打印如下:

MyFirstInterceptor...preHandle
MySecondInterceptor...preHandle
handler:test01...//處理器執行
MySecondInterceptor...preHandle
MyFirstInterceptor...postHandle
success.jsp//返回到響應頁面
MySecondInterceptor...preHandle
MyFirstInterceptor...afterCompletion
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章