在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>