实现接口 HandlerInterceptor
//请求处理之前进行调用
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
//进行逻辑处理
}
//preHandle 方法的返回值为true 时才能被调用,当前请求进行处理之后,也就是Controller 方法调用之后执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
//preHandle 方法的返回值为true 时才会执行。顾名思义,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
}
配置文件配置拦截
使用mvc:interceptor标签进行声明。使用这种方式进行声明的Interceptor可以通过mvc:mapping子标签来定义需要进行拦截的请求路径。mvc:exclude-mapping子标签来定义需要不进行拦截的请求路径。
<!-- 拦截器配置,拦截顺序:先执行后定义的,排在第一位的最后执行。-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="" /> //所拦截请求
<mvc:exclude-mapping path=""/> //不拦截请求
<bean class="" /> //拦截方法的所在位置
</mvc:interceptor>
</mvc:interceptors>