SpringMVC筆記(四)攔截器
阿新 • • 發佈:2017-08-24
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筆記(四)攔截器