目录1. 入门1.1 编写实体类1.2 编写过滤器1.3 编写Controller1.4 在启动类上开启servlet组件扫描(@ServletComponentScan)1.5 测试并观察控制台打印情况2. 进阶2.1 过滤器简单介绍2.2 编写过滤器类2.3?编写过滤器配置类2.4?Controller和实体类和之前一样,启动类的servlet组件扫描可去除2.5?启动程序并观察控制台* *##### 1. 入门###### 1.1 编写实体类 @Component @Data @AllArgsConstructor @NoArgsConstructor public class Message { private Date date; private String msg ; private String title; }###### 1.2 编写过滤器 @WebFilter(urlPatterns = "/message/“,filterName = “filter1”) public class MessageFilter1 extends HttpFilter { @Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(”/message/echo".equals(request.getRequestURI())) { String title = request.getParameter(“title”); System.out.println(“【filter1】拦截到的请求的title参数内容为:”+title); } // 将请求传递给链中的下一个过滤器或目标Servlet chain.doFilter(request,response); } }###### 1.3 编写Controller @RestController @RequestMapping(“/message”) public class MessageController { @Resource private Message message ; @RequestMapping(“/echo”) public Message echo(String msg,String title) { message.setTitle(title); message.setMsg(msg); return message; } }###### 1.4 在启动类上开启servlet组件扫描(@ServletComponentScan) @SpringBootApplication @ServletComponentScan //开启servlet组件扫描 public class MicrobootWebApplication { public static void main(String[] args) { SpringApplication.run(MicrobootWebApplication.class, args); } }###### 1.5 测试并观察控制台打印情况 http://localhost:8083/message/echo?msg=西红柿战争&title=两败俱伤拦截成功##### 2. 进阶###### 2.1 过滤器简单介绍过滤器(Filter)是Java Web应用中一种用于处理请求(request)和响应(response)的组件过滤器和拦截器的执行顺序:* 过滤器(预处理)* 过滤器(后处理)* 拦截器(前处理)* 控制器方法(Controller)* 拦截器(后处理)* 过滤器(后处理)###### 2.2 编写过滤器类 //过滤器1,因为有了配置类,不再需要添加@WebFilter注解 public class MessageFilter1 extends HttpFilter { @Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(“/message/echo”.equals(request.getRequestURI())) { String title = request.getParameter(“title”); System.out.println(“【filter1】拦截到的请求的title参数内容为:”+title); } chain.doFilter(request,response); } } public class MessageFilter2 extends HttpFilter { @Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(“/message/echo”.equals(request.getRequestURI())) { String msg = request.getParameter(“msg”); System.out.println(“【filter2】拦截到的请求的title参数内容为:”+msg); } chain.doFilter(request,response); } }###### 2.3编写过滤器配置类 //过滤器配置类 @Configuration public class WebFilterConfig { @Bean public FilterRegistrationBean getFilter1Registration() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(this.getMessageFilter1()); //设置过滤器名称和路径,在过滤器类写了的话,这里不用重复写 filterRegistrationBean.setName(“filter”); filterRegistrationBean.addUrlPatterns(“/*”); //设置过滤器执行顺序,数字越小,越早进行过滤,也可设置为负数 filterRegistrationBean.setOrder(1); return filterRegistrationBean; } @Bean public FilterRegistrationBean getFilter2Registration() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(this.getMessageFilter2()); //设置过滤器执行顺序 filterRegistrationBean.setOrder(2); return filterRegistrationBean; } @Bean public MessageFilter1 getMessageFilter1() { return new MessageFilter1(); } @Bean public MessageFilter2 getMessageFilter2() { return new MessageFilter2(); } }###### 2.4Controller和实体类和之前一样,启动类的servlet组件扫描可去除 //@ServletComponentScan //开启servlet组件扫描 public class MicrobootWebApplication { public static void main(String[] args) { SpringApplication.run(MicrobootWebApplication.class, args); } }###### 2.5启动程序并观察控制台 http://localhost:8083/message/echo?msg=西红柿战争&title=两败俱伤
filter1比filter2先启用,执行成功。
SpringBoot中使用Filter(过滤器)
张小明
前端开发工程师
Python实现自动化网页操作步骤
实现自动化网页操作步骤时间更新至, 二零二三年, 六月五日, 十一点, 四十五分, 三十秒 , 作者为安乐常。这篇文章着重讲怎样达成自动化网页操作, 文中存有详尽的流程步骤以及代码示例, 对于我们的学习或者工作具备一定的助力, 有需求的朋友能够参照一下。1 准备推荐使用浏览器1…
WAIC 2023|达闼机器人发布业界首个机器人多模态大模型RobotGPT
如以其为主导的AI大模型技术正于改变天地之间。于国内范畴之内, 百亿参数、千亿参数乃至万亿参数的大模型好似雨后春笋一样纷纷冒出来, “百模大战”已然拉开了帷幕。达闼机器人, 于2023世界人工智能大会(WAIC 2023)时, 举办了新品发布会, 主题为“行业大…
C语言函数指针与回调函数实战:从计算器重构到qsort模拟实现
1. 项目概述:从“硬编码”到“函数指针”的优雅转身 做C语言开发,尤其是涉及到算法、数据处理或者需要高度模块化的场景时,我们常常会写出这样的代码:一个庞大的 switch-case 或者一堆 if-else 语句,里面塞满了各种…
Linux应用软件编程 目录IO
目录IO目录 IO 用于操作 Linux 目录(文件夹),读取目录下的文件列表、创建目录。 头文件#include <dirent.h> // opendir readdir closedir #include <sys/stat.h> // mkdir一、核心概念DIR *:目录流指针,类…
探秘当下提供人工外贸独立站建站服务的专业机构!
在全球化浪潮下,外贸独立站已成为企业拓展海外市场的重要渠道,提供人工外贸独立站建站服务的专业机构也因此备受关注。上海凰启作为其中的佼佼者,凭借独特的服务模式和显著优势,在行业中占据一席之地。行业痛点与上海凰启的解决方…
无人机视觉系统实战:目标检测与跟踪的物理约束与部署优化
简介:目标检测与跟踪是计算机视觉的基础任务,但在无人机边缘端落地时,必须直面算力限制、运动耦合与空域干扰等物理约束。其核心原理不仅是算法匹配,更是传感器数据、飞控姿态与环境动态的联合建模;技术价值在于实现低…