一、预处理,拦截器之前执行
jsp页面测试代码:
<h3>拦截器</h3>
<a href="user/testInterceptor">拦截器</a>
controller后台代码:
@RequestMapping("/testInterceptor")
public String testInterceptor(){
System.out.println("testInterceptor执行了...");
//当返回success时视图解析器自动跳转指定页面
return "success";
}
自定义拦截器类:
public class MyInterceptor1 implements HandlerInterceptor {
/**
* 预处理,controller方法执行前
* return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
* return false不放行
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor1执行了...");
return true;
}
}
springMVC.xml配置拦截器:
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--要拦截的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法-->
<!--<mvc:exclude-mapping path=""/>-->
<bean class="controller.MyInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>
结果:
二、后处理(未修改内容与之前一致)
自定义拦截器内增加代码:
/**
* 后处理,controller方法执行后,jsp页面执行之前
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor1执行了...后");
}
结果:
三、最后一种
自定义拦截器增加代码:
/**
* jsp页面执行之后
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyInterceptor1执行了...最后");
}
结果: