Interceptor详解

来源:互联网 发布:数据结构和算法的关系 编辑:程序博客网 时间:2024/06/08 11:14

1.拦截器的定义:

Public class HandlerInterceptor1 implements HandlerInterceptor{

 

/**

 * controller执行前调用此方法

 * 返回true表示继续执行,返回false中止执行

 * 这里可以加入登录校验、权限拦截等

 */

@Override

Public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

// TODO Auto-generated method stub

Return false;

}

/**

 * controller执行后但未返回视图前调用此方法

 * 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示

 */

@Override

Public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

// TODO Auto-generated method stub

}

/**

 * controller执行后且视图返回后调用此方法

 * 这里可得到执行controller时的异常信息

 * 这里可记录操作日志,资源清理等

 */

@Override

Public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

// TODO Auto-generated method stub

}

}


2.拦截器的配置

<!--拦截器 -->

<mvc:interceptors>

<!--多个拦截器,顺序执行 -->

<mvc:interceptor>

<mvc:mapping path="/**"/>

<bean class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean>

</mvc:interceptor>

<mvc:interceptor>

<mvc:mapping path="/**"/>

<bean class="cn.itcast.springmvc.filter.HandlerInterceptor2"></bean>

</mvc:interceptor>

</mvc:interceptors>



3.拦截器总结:

preHandle按拦截器定义顺序调用

postHandler按拦截器定义逆序调用

afterCompletion按拦截器定义逆序调用

 

postHandler在拦截器链内所有拦截器返成功调用

afterCompletion只有preHandle返回true才调用


0 0
原创粉丝点击