SpringMVC拦截器Interceptor
1、SpringMVC拦截器用于对控制其方法进行前置、后置处理
2、拦截器的底层实现技术是AOP
3、拦截器必须实现HandlerInterceptor
接口
使用场景
权限控制、登录拦截、字符集管理、国际化等,可以做到不修改原始代码的情况下实现功能
例子
配置文件 applicationContext.xml
<beans ...>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>
实现HandlerInterceptor接口
public class MyInterceptor implements HandlerInterceptor {
// 运行Controller内方法前执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("进入 preHandle 方法..." + request.getRequestURL().toString());
return true;//返回true,请求会送达Controller方法执行;返回false,请求中断,postHandle方法也不会执行
}
// Controller内方法执行完后,视图渲染前执行(得到结果但响应还没真正返回时)
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("进入 postHandle 方法..." + request.getRequestURL().toString());
}
// 后置方法,上面两个方法执行完后执行。无论preHandle返回true或false都会执行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("进入 afterCompletion 方法..." + request.getRequestURL().toString());
}
}
发表回复