一、配置方法
public class HelloInterceptor implements HandlerInterceptor {
//调用目标处理方法之前执行,权限日志等
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object handler) throws Exception {
if(handler instanceof HandlerMethod){
HandlerMethod handlerMethod = (HandlerMethod)handler;
Object bean = handlerMethod.getBean();
Method method = handlerMethod.getMethod();
System.out.println("HelloInterceptor:"+bean.getClass()+",method:"+method.getName()+",args:"+
Arrays.toString(method.getParameterTypes()));
}
return true;//true表示继续执行其他拦截器
}
//调用目标处理方法之后执行,渲染视图之前,可以对数据模型或视图进行修改
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
//渲染视图之后,可以用来释放资源
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
二、配置文件
<mvc:interceptors>
<!-- 默认拦截所有请求-->
<bean class="interceptor.HelloInterceptor"/>
<mvc:interceptor>
<!-- 指定拦截-->
<mvc:mapping path="/user/regist"/>
<!-- 指定不拦截-->
<mvc:exclude-mapping path="/param/test1"/>
<bean class="interceptor.TimerInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>