过滤器和拦截器区别以及执行顺序图_压缩空气过滤器安装顺序

过滤器和拦截器区别以及执行顺序图_压缩空气过滤器安装顺序过滤器和拦截器区别觉得这个总结的很好,所以用来借鉴借鉴摘抄于网络,侵删过滤器和拦截器执行顺序在SpringBoot中编写测试代码自定义过滤器/***@Author:xiaoshijiu*@Date:2019/5/22*@Description:自定义过滤器*/publicclassMyFilterextendsHttpFilter…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  1. 过滤器和拦截器区别
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    觉得这个总结的很好,所以用来借鉴借鉴
    摘抄于网络,侵删

  2. 过滤器和拦截器执行顺序
    在SpringBoot中编写测试代码

    • 自定义过滤器
    /** * @Author: xiaoshijiu * @Date: 2019/5/22 * @Description: 自定义过滤器 */
    public class MyFilter extends HttpFilter { 
         
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException { 
         
            System.out.println("Filter----before");  
            chain.doFilter(request,response);
            System.out.println("Filter----after");
        }
    }
    
    • 自定义拦截器
      (有关SpringMVC的拦截器知识原理,可以参照我之前的博客)
      SpringMVC拦截器详解
      SpringMVC拦截器执行顺序原理解释

      /** * @Author: xiaoshijiu * @Date: 2019/5/22 * @Description: $value$ */
      public class MyInterception implements HandlerInterceptor { 
             
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                  Object handler) throws Exception { 
             
              System.out.println("Interception----before");
              return true;
          }
      
          @Override
          public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                  ModelAndView modelAndView) throws Exception { 
             
              System.out.println("Interception----before2");
          }
      
          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
                  Object handler, Exception ex) throws Exception { 
             
              System.out.println("Interception----after");
          }
      }
      
      • 配置拦截器和过滤器
      /** * @Author xiaoshijiu * @Description 自定义Mvc配置,实现全面接管SpringMvc的配置 * @Date 2019/5/13 */
      @Configuration
      public class MyWebMvc implements WebMvcConfigurer { 
             
          /** * 注册自定义的filter 就相当于在普通web工程中,在web.xml中注册的<filter></filter> */
          @Bean
          public FilterRegistrationBean myFilter() { 
             
              return new FilterRegistrationBean(new MyFilter());
          }
      
          @Override
          public void addInterceptors(InterceptorRegistry registry) { 
             
              // 添加自定义的拦截器
              registry.addInterceptor(new MyInterception()).addPathPatterns("/hello");
          }
      }
      
      • 编写Controller,测试
      /** * @Author: xiaoshijiu * @Date: 2019/5/22 * @Description: 测试Controller */
      @RestController
      public class Mycontroller { 
             
      
          @RequestMapping("hello")
          public String hello() { 
             
              System.out.println("hello...来了");
              return "hello";
          }
      }
      
      • 打印结果
        在这里插入图片描述
        这里可以看到拦截器和过滤器的执行顺序,对照着上面他们的区别也是很好理解的
        总结一下,执行顺序
        在这里插入图片描述
        这里还有一个问题就是发送/hello请求filter被执行了两次,我们可以获取url来判别一下
        自定义过滤器添加代码
      		HttpServletRequest servletRequest = (HttpServletRequest) request;
              System.out.println(servletRequest.getRequestURI());
      

      可以看到SpringBoot项目会发送图标的请求(/favicon.ico)
      在这里插入图片描述
      最后在补充一下,request获取请求的一些方法的内容
      在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172388.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • python interpolate.interp1d_索引错误scipy.interpolate.interp1d「建议收藏」

    python interpolate.interp1d_索引错误scipy.interpolate.interp1d「建议收藏」我试图得到一个三次样条函数scipy.interpolate.interp1d功能。我试图让documentationpage上的示例正常工作,但每当我运行它时,都会出现以下错误:plt.plot(x,y,’o’,xnew,f(xnew),’-‘,xnew,f2(xnew),’–‘)File”/Library/Python/2.7/site-packages/scipy-0.12.0…

    2022年6月4日
  • Linux防火墙详解「建议收藏」

    Linux防火墙详解「建议收藏」防火墙介绍inux防火墙主要工作在网络层,属于典型的包过滤防火墙。在RHEL中常用的有两种火墙工具iptables和firewalld,但软件本身其实并不具备防火墙功能,他们的作用都是在用户空间中管理和维护规则,只不过规则结构和使用方法不一样罢了,真正利用规则进行过滤是由内核netfilter完成的。netfilterIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Lin

    2022年9月22日
  • 【原创】PEST分析思维的一些基本思考与见解

    【原创】PEST分析思维的一些基本思考与见解数据说·思维季所谓不可能,只是现在的自己不可能,对将来的自己而言那是“可能”的。–稻盛和夫前言我们上篇内容,梳理和分享数据分析入门级思维—描述性分析思维,能让我们了解到数据信息的整体概况…

    2022年5月15日
  • 关于迁移学习「建议收藏」

    作者:刘诗昆链接:https://www.zhihu.com/question/41979241/answer/123545914来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。2018.1.二次更新/重点介绍迁移学习和其相关方向,完整删除之前的答案,并重新规整了迁移学习内容和代表性文章。什么是/为什么要迁移学习?迁移学习(T

    2022年4月17日
  • vim 删除多行方法

    vim 删除多行方法比如想删除一个文件的1-42行的前2列:gg#到文件首ctrl+v#可视块模式42j,2l#注意是小写的J和L(使用方向键向下和向右来选择删除区域也可以)d#删除…

    2022年6月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号