springMVC之攔截器
阿新 • • 發佈:2017-05-30
urn html request ora 異常處理 bool class 用戶 name
2. 繼承適配器: HandleInterceptorAdapter
3. 配置user-servlet.xml
有兩種方法配置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!方案2:--> </mvc:interceptors>
<!-- 配置自己定義攔截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/user/add" /> <!-- 僅僅攔截加入用戶 --> <bean class="com.zdp.interceptor.MyInterceptor2"></bean> </mvc:interceptor> </mvc:interceptors>
springMVC之攔截器