springMvc--拦截器

本文中使用的是实现 HandlerInterceptor接口

步骤

1.自定义的拦截器:

/**
 * 拦截器 
 */
public class CustomerInterceptor implements HandlerInterceptor{

    /**
     * HandlerInterceptor接口中定义了三个方法
     * 执行顺序:
     * 1.preHandle:
     *     当请求过来时,会优先进入preHandle这个方法如果return true 请求放行,如果return false 请求立即终止
     * 2.执行要拦截的controller
     * 3.postHandle:
     *     当preHandle方法放回为true,且controller执行完成后会进入postHandle这个方法
     * 4.afterCompletion:
     *     当postHandle执行完成之后,执行afterCompletion方法
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        System.out.println("----开始拦截----");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        if(modelAndView!=null){
            modelAndView.addObject("date", new Date());
        }
        System.out.println("------拦截后处理1-----");
    }

    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("------拦截后处理2-----");
    }

}

2.springMvc配置文件中添加如下的配置

<mvc:interceptor> 可以配置多个, 当配置多个时,按照 <mvc:interceptor> 的配置顺序,先执行第一个拦截器的preHandle,等所有的 preHandle 执行完后,在按照 <mvc:interceptor> 的配置顺序,先执行最后一个拦截器的 postHandle
<!-- 拦截器配置 -->
    <bean id="customerInterceptor" class="zpark.interceptor.CustomerInterceptor"/>
    
    <!-- 把拦截器加入到springMvc拦截体系中 -->
    <mvc:interceptors>
        <mvc:interceptor> 
            <!-- 要拦截的路径 -->
            <mvc:mapping path="/json/**"/>
            <!-- 引用自定义的拦截器 -->
            <ref bean="customerInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

 

posted @ 2016-08-25 22:02  liuconglin  阅读(198)  评论(1)    收藏  举报