bean-cfg.xml文件自定义自己的拦截器
<mvc:interceptors>
<!--配置自定义的拦截器-->
<bean class="com.study.interceptors.firstInterceptor"/>
</mvc:interceptors>
com.study.interceptors.firstInterceptor.java文件
package com.study.interceptors;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class firstInterceptor implements HandlerInterceptor {
/**
* 在目标方法之前调用。
* 若返回值为true,则继续调用后续的拦截器和目标方法
* 若返回false,则不会再调用后续的拦截器和目标方法
* 该方法可以考虑做权限验证,日志,事务等
*
* @param request 请求
* @param response 响应
* @param handler 视图名称或视图对象或属性
* @return {boolean}
* @throws Exception {String}
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("[FirstInterceptor]=>preHandle");
return true;
}
/**
* 调用目标方法之后,但渲染视图之前被调用
* 该方法可以对请求域中的属性或视图做修改
*
* @param request 请求
* @param response 响应
* @param handler 自定义对象
* @param modelAndView 含视图名称或视图对象或属性
* @throws Exception {String}
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("[FirstInterceptor]=>postHandle");
}
/**
* 渲染视图之后被调用,释放资源
*
* @param request 请求
* @param response 响应
* @param handler 自定义对象
* @param ex {string}
* @throws Exception {string}
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("[FirstInterceptor]=>afterCompletion");
}
}
拦截器执行流程
preHandle → handle → postHandle → 视图(DispatcherServlet) → afterCompletion
配置指定域拦截器
<!--配置LocalChanceInterceptor拦截器-->
<mvc:interceptors>
<!--配置指定域拦截器-->
<mvc:interceptor>
<mvc:mapping path="/path/"/>
<bean class="com.study.interceptors.firstInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
配置多个拦截器
<!--配置LocalChanceInterceptor拦截器-->
<mvc:interceptors>
<bean class="com.study.interceptors.FirstInterceptor"/>
<!--配置指定域拦截器-->
<mvc:interceptor>
<mvc:mapping path="/path/"/>
<bean class="com.study.interceptors.LastInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
拦截器执行流程
[FirstInterceptor]:preHandle → [LastInterceptor]:preHandle → HandlerAdapter:handle → [LastInterceptor]:postHadnle → [FirstInterceptor]:postHadnle → DispatcherServlet:render → [LastInterceptor]:afterCompletion → [FirstInterceptor]:afterCompletion