spring中的拦截器

1)什么是拦截器
       spring框架提供的一个组件 当dispatcherServlet收到请求之后,如果有拦截器,会先调用拦截器,然后在调用处理器(Controller)
       注:过滤器属于Servlet规范,用于拦截Servlet容器的调用过程,而拦截器属于spring框架,用于拦截DispatcherServlet的调用过程
    
    2)如何写一个拦截器
        第一步:写一个Java类,要实现HandlerInterceptor接口
        第二步:在拦截器接口方法当中,实现拦截处理逻辑
        这两步骤:public class SomeInterceptor implements HandlerInterceptor{
    //DispatcherServlet收到请求之后会调用拦截器的prehandle方法
    //如果这个方法的返回值为true,表示继续向后调用执行
    //如果返回值为false,则不再向后调用
    //handler:表示可以通过这个对象获得处理器方法的描述(比如方法名字,参数的类型)
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println("哈哈哈哈");
        return true;
    }

    //当处理器(controller)方法已经执行完毕 正准备将处理结果(ModelAndView)返回给DispatcherServlet之前
    //会执行postHandle方法
    //注:可以在这个方法里面修改 ModelAndView
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("哦哦哦哦哦哦");
    }

    //请求处理完毕之后,最后执行这个方法
    //注:ex 是处理器方法抛出的异常
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("啊啊啊啊啊啊啊");
    }
    
}

        第三步:在applicationContext.xml配置文件中配置拦截器

            <!-- 配置拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>    
            <mvc:exclude-mapping path="/toLogin.do"/>   //这是要排除的请求地址,不要进行拦截的
            <mvc:exclude-mapping path="/login.do"/>
            <bean class="cn.tedu.netctoss.interceptors.SessionInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

猜你喜欢

转载自blog.csdn.net/donghua19900508/article/details/77994034
今日推荐