拦截器执行流程
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
}