1. 程式人生 > >springMVC之攔截器

springMVC之攔截器

urn html request ora 異常處理 bool class 用戶 name

有兩種方法配置spring的攔截器

1. 實現接口: HandleInterceptor

public class MyInterceptor1 implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) throws Exception {
		System.out.println("最後運行。!!一般用於釋放資源。。");
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView model) throws Exception {
		System.out.println("Action運行之後,生成視圖之前運行!!");
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
		System.out.println("action之前運行!

!"); return true; // 繼續運行action } }

a) preHandle

該方法在action運行前運行。能夠實現對數據的預處理。比方:編碼、安全控制等。

假設方法返回true,則繼續運行action。

b) postHandle

該方法在action運行後,生成視圖前運行。在這裏。我們有機會改動視圖層數據。

c) afterCompletion

最後運行。通經常使用於釋放資源,處理異常。

我們能夠依據ex是否為空,來進行相關的異常處理。

由於我們在平時處理異常時,都是從底層向上拋出異常。最後到了spring框架從而到了這種方法中。


2. 繼承適配器: HandleInterceptorAdapter

public class MyInterceptor2 extends HandlerInterceptorAdapter {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		System.out.println("MyInterceptor2.preHandle()");
		return true; // 繼續運行action
	}

}

3. 配置user-servlet.xml

方案1:

<!-- 配置自己定義攔截器 -->
<mvc:interceptors>
	<bean class="com.zdp.interceptor.MyInterceptor1"></bean> <!-- 攔截全部的url!

--> </mvc:interceptors>

方案2:

<!-- 配置自己定義攔截器 -->
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/user/add" /> <!-- 僅僅攔截加入用戶 -->
		<bean class="com.zdp.interceptor.MyInterceptor2"></bean>
	</mvc:interceptor>
</mvc:interceptors>






springMVC之攔截器