Spring拦截器和异常处理的执行流程

124 阅读1分钟

拦截器执行流程

这里写图片描述

1. 拦截器组件编写规则

实现HandlerInterceptor接口,例如
public class CheckLoginInterceptor implements HandlerInterceptor{
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {
// TODO 处理逻辑3
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {
// TODO 处理逻辑2
}
//如果返回true表示继续调用Controller后续流程;
//如果返回false表示终止后续流程的执行
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object arg2) throws Exception {
//TODO 处理逻辑1
}
}

2. 拦截器组件配置规则

<mvc:interceptors>
<mvc:interceptor>
<!-- 要拦截的请求 -->
<mvc:mapping path="/*"/>
<!-- 要排除不进行拦截的请求 -->
<mvc:exclude-mapping path="/tologin.do"/>
<mvc:exclude-mapping path="/login.do"/>
<!-- 指定拦截器组件 -->
<bean class="cn.xdl.interceptor.CheckLoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>

3. 异常处理

基于Java编码,局部,管理当前Controller异常,直接写在会发生异常的controller当中
可以在Controller组件中追加异常处理方法。方法定义格式如下
@ExceptionHandler
public String|ModelAndView xxx(Exception e){
//返回ModelAndView对象或视图名称String
}