springmvc拦截器

来源:互联网 发布:mysql数据库常用命令 编辑:程序博客网 时间:2024/05/16 15:25

1. 自定义的拦截器

  publicclass FirstInterceptor implements HandlerInterceptor{   //实现这个接口并重写方法

<!-- 配置自定义的拦截器 -->

<bean class="com.atguigu.springmvc.interceptors.FirstInterceptor"></bean>

三种方法的说明及其作用:

preHandle:该方法在目标方法之前被调用.若返回值为 true,则继续调用后续的拦截器和目标方法。若返回值为 false,则不会再调用后续的拦截器和目标方法。

可以考虑做权限.,日志,事务等。

postHandle:调用目标方法之后,但渲染视图之前。可对请求域中的属性或视图做出修改.

afterCompletion:渲染视图之后被调用。释放资源。

2. 拦截器的配置

 <mvc:interceptors>

     <!-- 配置拦截器作用(或不作用)的路径,现在设置的只对/emps路径有效 -->

        <mvc:interceptor>

                   <mvc:mappingpath="/emps"/>

                   <beanclass="com.atguigu.springmvc.interceptors.SecondInterceptor"></bean>

        </mvc:interceptor>

</mvc:interceptors>

3. 多个拦截器的执行顺序

  preHandle正序执行,postHandle、afterCompletion倒序执行。

执行顺序:FirstpreHandle----SecondpreHandle----SecondpostHandle----FirstpostHandle---SecondafterCompletion----FirstafterCompletion

注:如果preHandle返回false,则其方法体和postHandle、afterCompletion都不会执行;如果preHandle返回true,则afterCompletion一定会执行;如果SecondpreHandle返回false,则执行顺序是:FirstpreHandle----SecondpreHandle----FirstafterCompletion。