springmvc拦截器
Spring拦截器:
springmvc.xml 中的配置:
<!-- 配置拦截器 --> <!-- 如果有多个拦截器,会按照配置的先后顺序来执行。 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/><!-- 如果只有一个* 只拦截一层的请求,**拦截所有请求 --> <bean class="interceptors.SomeInterceptor"/> </mvc:interceptor> </mvc:interceptors>
package interceptors;
创建拦截器类:
package interceptors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class SomeInterceptor implements HandlerInterceptor{ /** * DispatcherServlet收到请求之后,会先调用preHandle方法,如果该方法的返回值是true,则继续向后调用, * 如果返回值为false,则不再向后调用。 * arg2:描述处理器方法的一个对象。 */ public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object arg1) throws Exception { System.out.println("preHandle()"); return true; } /** * 处理器(Controller)的方法已经执行完毕,正准备将处理结果(ModelAndView对象)返回给DispatcherServlet之前 * 执行postHandle方法,可以在该方法里面修改处理结果。 */ public void postHandle(HttpServletRequest req, HttpServletResponse res, Object arg2, ModelAndView mav) throws Exception { System.out.println("postHandle()"); } /** * 最后执行的方法。 * 注意:只有当preHandle 方法返回值为true时,该方法才会执行 * ex:是处理器所抛出的异常,可以写一个拦截器,用来处理处理器所抛出的异常。 */ public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object arg3, Exception ex) throws Exception { System.out.println("afterCompletion()"); } }