美文网首页
SpringMVC框架中的拦截器

SpringMVC框架中的拦截器

作者: 阿杰_96c5 | 来源:发表于2020-04-07 22:42 被阅读0次

    1.拦截器的概述

    1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
    2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。
    3. 拦截器和过滤器的功能比较类似,有区别
    4. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
    5. 拦截器是SpringMVC框架独有的。
    6. 过滤器配置了/*,可以拦截任何资源。
    7. 拦截器只会对控制器中的方法进行拦截。
    8. 拦截器也是AOP思想的一种实现方式
    9. 想要自定义拦截器,需要实现HandlerInterceptor接口。

    2.自定义拦截器步骤

    2.1 创建类,实现HandlerInterceptor接口,重写需要的方法

    /**
     * 自定义拦截器
     */
    public class MyInterceptor1 implements HandlerInterceptor {
    
        /**
         * 预处理,controller方法执行前
         * return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
         * @param request
         * @param response
         * @param handler
         * @return
         * @throws Exception
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("MyInterceptor1 执行了...");
    
            // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
            return true;
        }
    
        /**
         * 后处理方法,controller 方法执行之后,success.jsp执行之前
         * @param request
         * @param response
         * @param handler
         * @param modelAndView
         * @throws Exception
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("MyInterceptor1执行...后");
        }
    
        /**
         * success.jsp执行之后,该方法会执行
         * @param request
         * @param response
         * @param handler
         * @param ex
         * @throws Exception
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("success.jsp执行之后....");
        }
    
    
    }
    

    2.2在springmvc.xml中配置拦截器类

    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--要拦截的具体的方法-->
            <mvc:mapping path="/user/*"/>
            <!--不要拦截的方法
            <mvc:exclude-mapping path=""/>
            -->
            <bean class="org.example.interceptor.MyInterceptor1"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
    

    3.配置多个拦截器

    3.1再编写一个拦截器的类

    3.2 配置2个拦截器

    <!-- 配置拦截器 -->
    <mvc:interceptors>
    <mvc:interceptor>
    <!-- 哪些方法进行拦截 -->
    <mvc:mapping path="/user/*"/>
    
        <!-- 注册拦截器对象 -->
        <bean class="cn.itcast.demo1.MyInterceptor1"/>
    </mvc:interceptor>
        <mvc:interceptor>
            <!-- 哪些方法进行拦截 -->
            <mvc:mapping path="/**"/>
            <!-- 注册拦截器对象 -->
            <bean class="cn.itcast.demo1.MyInterceptor2"/>
        </mvc:interceptor>
    </mvc:interceptors>
    

    相关文章

      网友评论

          本文标题:SpringMVC框架中的拦截器

          本文链接:https://www.haomeiwen.com/subject/utkaphtx.html