在springmvc中能夠配置本身的攔截器,分別實如今請求方法以前、顯示視圖以前、顯示視圖以後調用攔截器中的方法。java
/** * 該方法在目標方法以前被調用. * 若返回值爲 true, 則繼續調用後續的攔截器和目標方法. * 若返回值爲 false, 則不會再調用後續的攔截器和目標方法. * <p> * 用途:作權限. 日誌, 事務等. */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("[FirstInterceptor] preHandle"); return true; } /** * 調用目標方法以後, 但渲染視圖以前. * 用途:對請求域中的屬性或視圖作出修改. */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("[FirstInterceptor] postHandle"); } /** * 渲染視圖以後被調用. * 用途:釋放資源 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("[FirstInterceptor] afterCompletion"); }
<mvc:interceptors> <!--表示在請求全部的控制器方法以前都會調用該攔截器--> <bean class="com.springapp.interceptors.MyFirstInterceptors"/> <!--表示在訪問指定的控制器方法時纔會調用的攔截器--> <mvc:interceptor> <mvc:mapping path="/user/"/> <bean class="com.springapp.interceptors.MySecondInterceptors"/> </mvc:interceptor> </mvc:interceptors>