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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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获取请求的一些方法的内容
      在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 浪漫公式 Love 分段函数和各种心型函数 matlab实现

    浪漫公式 Love 分段函数和各种心型函数 matlab实现浪漫公式Love分段函数和各种心型函数matlab实现

  • SCL语言_scl语言优势

    SCL语言_scl语言优势西门子SCL语言处理数据的“先进先出”处理案例先进先出,是指根据先入库先发出的原则,对于发出的存货以先入库存货的单价计算发出存货成本的方法。(1)、建立数据(自己设计,自己理解的,如有错误请指教)建立一个DB块,在DB块中建立上面图的数据,“先进”的解释:在名称read的数据写入变量,把名称位read_start的值写为1,read的数据写入下面write/read_no的数组中,反复操作,先进来的数据会排列到数组数据的最上层,依次是后进来的数据。直到把数组填充满而无法写入。“先出”..

  • 星际密码[通俗易懂]

    星际密码[通俗易懂]题目:https://www.nowcoder.com/pat/2/problem/254

  • const修饰指针变量详解

    const修饰指针变量详解

  • broadcast receiver_consolidator

    broadcast receiver_consolidator应用调用RegisterReciever,实质是调用的ContextImpl的registerReceiver,接下来跟一下这个流程:@OverridepublicIntentregisterReceiver(BroadcastReceiverreceiver,IntentFilterfilter){returnregisterReceiver(receiver,…

  • 实验七 香农编码_香农编码效率可以大于1吗

    实验七 香农编码_香农编码效率可以大于1吗一、实验目的编程,对某一离散无记忆信源实现香农编码,输出消息符号及其对应的码字。设离散无记忆信源,。二进制香农编码过程如下:1、将信源发出的N个消息符号按其概率的递减次序依次排列。2、按下式计算第i个消息的二进制代码组的码长,并取整。3、为了编成唯一可译码,首先计算第i个消息的累加概率4、将累加概率Pi(为小数)变成二进制数5、除去小数点,并根据码长li,取小数点后li位数作为第i个消息的码字。二、实验环境Dev三、实验过程:#include<stdio.h>

发表回复

您的电子邮箱地址不会被公开。

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