欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JavaSpringMVC实现自定义拦截器,

来源: javaer 分享于  点击 32951 次 点评:49

JavaSpringMVC实现自定义拦截器,


目录
  • SpringMVC实现自定义拦截器
    • 1拦截器(interceptor)的作用
    • 2拦截器和过滤器区别
    • 3.实现过程
      • 3.1创建拦截器类实现HandlerInterceptor接口
      • 3.2配置拦截器
      • 3.3测试拦截器的拦截效果
      • 3.4编写jsp页面
      • 3.5测试结果
    • 4.拦截器链
      • 5.知识小结
      • 总结

        SpringMVC实现自定义拦截器

        1 拦截器(interceptor)的作用

        Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

        将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

        2 拦截器和过滤器区别

        关于interceptor和filter的区别,如图所示:

        image-20220312175950052

        3.实现过程

        步骤分析:

        1.创建拦截器类实现HandlerInterceptor接口

        2.配置拦截器

        3.测试拦截器的拦截效果

        3.1创建拦截器类实现HandlerInterceptor接口

        public class MyInterceptor implements HandlerInterceptor {
            /**
             *         preHandle: 在目标方法执行之前 进行拦截   return false:不放行
             */
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                System.out.println("preHandle1....");
                return true;
            }
            /**
             *       postHandle: 在目标方法执行之后,视图对象返回之前,执行的方法
             */
            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
                System.out.println("postHandle1....");
            }
            /**
             *        afterCompletion:在流程都执行完成后,执行的方法
             */
            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
                System.out.println("afterCompletion1....");
            }
        
        }
        

        3.2配置拦截器

        <!--    配置拦截器-->
            <mvc:interceptors>
                <mvc:interceptor>
                    <!--对哪些资源执行拦截操作 path="/**"表示对controller层所有方法进行拦截 -->
                    <mvc:mapping path="/**" />
                    <bean class="com.weihong.interceptor.MyInterceptor" />
                </mvc:interceptor>
            </mvc:interceptors>
        

        3.3测试拦截器的拦截效果

            @RequestMapping("/target")
            public String targetMethed(){
                System.out.println("目标方法执行了");
                return "interceptor";
            }
        

        3.4编写jsp页面

        <html>
        <head>
            <title>Title</title>
        </head>
        <body>
            <h3>success~~~~~~</h3>
            <% System.out.println("视图执行了....");%>
        </body>
        </html>
        

        3.5测试结果

        image-20220312181744982

        4. 拦截器链

        开发中拦截器可以单独使用,也可以同时使用多个拦截器形成一条拦截器链。开发步骤和单个拦截器是一样的,只不过注册的时候注册多个,注意这里注册的顺序就代表拦截器执行的顺序。

        同上,再编写一个MyHandlerInterceptor2操作,测试执行顺序:

        <!--配置拦截器-->
        <mvc:interceptors>
          <mvc:interceptor>
            <!--拦截器路径配置-->
            <mvc:mapping path="/**"/>
            <!--自定义拦截器类-->
            <bean class="com.lagou.interceptor.MyInterceptor1"></bean>
          </mvc:interceptor>
          <mvc:interceptor>
            <!--拦截器路径配置-->
            <mvc:mapping path="/**"/>
            <!--自定义拦截器类-->
            <bean class="com.lagou.interceptor.MyInterceptor2"></bean>
          </mvc:interceptor>
        </mvc:interceptors>
        

        5. 知识小结

        拦截器中的方法说明如下:

        image-20220312181936076

        总结

        本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注3672js教程的更多内容!  

        您可能感兴趣的文章:
        • SpringMVC自定义拦截器登录检测功能的实现代码
        • SpringMvc自定义拦截器(注解)代码实例
        • SpringMVC自定义拦截器实现过程详解
        • Spring MVC中自定义拦截器的实例讲解
        相关栏目:

        用户点评