1. 程式人生 > >SpringMVC筆記(四)攔截器

SpringMVC筆記(四)攔截器

servlet 執行 ued div throws nbsp ole spring 事務

一、攔截器:Spring MVC也可以使用攔截器對請求進行攔截處理,用戶可以自定義攔截器來實現特定的功能,自定義的攔截器必 須實現HandlerInterceptor接口

二、實現步驟:

1.自定義實現類實現HandlerInterceptor接口 2.在springMVC中配置文件中的配置相應的攔截器 實現的代碼: 1.自定義實現類
package com.neuedu.springmvc.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/* 
* 項目名稱:springmvc-03 
* @author:wzc
* @date 創建時間:2017年8月24日 上午10:37:35
* @Description:自定義攔截器
* @parameter  
*   */
public class interceptor implements HandlerInterceptor{

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("afterCompletion");	
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("postHandle");
	}
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("preHandle");
		return true;
	}

}

2.在springMVC中配置文件中的配置相應的攔截器

 <!-- 配置攔截器 -->
  <mvc:interceptors>
   <!-- 配置自定義攔截器全類名 -->
     <bean class="com.neuedu.springmvc.interceptor.interceptor"></bean>
  </mvc:interceptors>

三、攔截器工作原理

技術分享

四、攔截器中的三種方法:

– preHandle():該方法在目標方法之前被調用,
若返回值為true,則繼續調用後續的攔截器和目標方法
若返回值為false,則不會再調用後續的攔截器和目標方法
可以考慮做權限,日誌或者事務等!
– postHandle():調用目標方法之後,但渲染視圖之前被調用
可以對請求域中的屬性或者視圖做出修改!
– afterCompletion():渲染視圖之後被調用,
可以在該方法中進行一些資源清理的操作。

技術分享

五/多攔截器的實現

可以自定義多個攔截器實現類,然後只需要在SpringMVC-xml文件中進行配置就行

   <!-- 配置攔截器 -->
  <mvc:interceptors>
     <!-- 配置自定義攔截器全類名 -->
     <bean class="com.neuedu.springmvc.interceptor.interceptor"></bean>
 	<!-- 增加攔截器配置 -->
 	<mvc:interceptor >
 	       <!-- 可以配置攔截的請求路徑 -->
 	       <mvc:mapping path="/testJson"/>
 	       <!-- 配置自定義攔截器全類名 -->
 	      <bean class="com.neuedu.springmvc.interceptor.SecondInterceptor">
 	      </bean>
 	</mvc:interceptor>
  </mvc:interceptors>

六、多攔截器的執行順序圖

技術分享

SpringMVC筆記(四)攔截器