springmvc之自定义拦截器
1、在springmvc.xml配置文件中配置:
<mvc:interceptors> <!-- 配置自定义的拦截器 --> <bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean> </mvc:interceptors>
2、定义拦截器类,需要继承HandlerInterceptor
package com.gong.springmvc.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 FirstInterceptor implements HandlerInterceptor{ //该方法在目标方法之前被调用 //如果返回true,则继续调用后续的拦截器和目标方法,若为false,则不会在调用后续的拦截器和目标方法 //该方法可以考虑做权限、日志、事务等 @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"); } }
需要注意每个方法调用的时机和顺序。
3、在发送请求后,在终端可以看到: