SpringBoot之注册Web组件

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringBoot之注册Web组件


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、注册Servlet
    • 注册方式一
    • 注册方式二
  • 二、注册Filter
    • 注册方式一
    • 注册方式二
  • 注册Listener
    • 注册方式一
    • 注册方式二
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

在当今的互联网时代,Web 应用程序已经成为了人们日常生活和工作中不可或缺的一部分。而SpringBoot 作为一个基于 Java 的轻量级框架,因其简单易用、快速开发和高效运行的特点,受到了越来越多开发者的青睐。
在SpringBoot 应用程序中,注册 Web 组件是一个非常重要的环节。它可以帮助我们将应用程序的各个部分(如控制器、服务、过滤器等)整合到一起,形成一个完整的 Web 应用程序。
通过阅读这篇博客文章,读者将不仅可以掌握SpringBoot 注册 Web 组件的基本概念和方法,还能够了解一些高级技巧和最佳实践。无论是刚开始学习SpringBoot 的新手,还是已经有一定经验的开发者,都可以从中受益。
让我们一起开始探索SpringBoot 之注册 Web 组件的世界吧!


一、注册Servlet

由于SpringBoot项目没有web.xml文件,所以无法在web.xml中注册web组件,SpringBoot有自己的方式注册web组件。

注册方式一

1.编写servlet

@WebServlet("/first")
public class FirstServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response){System.out.println("First Servlet........");}
}

2.启动类扫描web组件

@SpringBootApplication
//SpringBoot启动时扫描注册注解标注的Web组件
@ServletComponentScan
public class Springbootdemo2Application {public static void main(String[] args) {SpringApplication.run(Springbootdemo2Application.class, args);}
}

注册方式二

1.编写servlet

public class SecondServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response){System.out.println("Second Servlet........");}
}

2.使用配置类注册servlet

@Configuration
public class ServletConfig {//ServletRegistrationBean可以注册Servlet组件,将其放入Spring容器中即可注册Servlet@Beanpublic ServletRegistrationBean getServletRegistrationBean(){// 注册Servlet组件ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());// 添加Servlet组件访问路径bean.addUrlMappings("/second");return bean;}
}

二、注册Filter

注册方式一

1.编写filter

@WebFilter(urlPatterns = "/first")
public class FirstFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException { }@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("进入First Filter");filterChain.doFilter(servletRequest,servletResponse);System.out.println("离开First Filter");}@Overridepublic void destroy() { }
}

2.启动类扫描web组件

@SpringBootApplication
//SpringBoot启动时扫描注册注解标注的Web组件
@ServletComponentScan
public class Springbootdemo2Application {public static void main(String[] args) {SpringApplication.run(Springbootdemo2Application.class, args);}
}

注册方式二

1.编写filter

public class SecondFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException { }@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("进入Second Filter");filterChain.doFilter(servletRequest,servletResponse);System.out.println("离开Second Filter");}@Overridepublic void destroy() { }
}

2.使用配置类注册filter

@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean getFilterRegistrationBean(){// 注册filter组件FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());// 添加过滤路径bean.addUrlPatterns("/second");return bean;}
}

注册Listener

注册方式一

1.编写Listener

@WebListener
public class FirstListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("First Listener Init......");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {}
}

2.启动类扫描web组件

@SpringBootApplication
//SpringBoot启动时扫描注册注解标注的Web组件
@ServletComponentScan
public class Springbootdemo2Application {public static void main(String[] args) {             SpringApplication.run(Springbootdemo2Application.class, args);}
}

注册方式二

1.编写Listener

public class SecondListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("Second Listener Init......");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {}
}

2.使用配置类注册Listener

@Configuration
public class ListenerConfig {@Beanpublic ServletListenerRegistrationBean getServletListenerRegistrationBean(){ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());return bean;}
}

总结

提示:这里对文章进行总结:

通过阅读这篇博客,读者应该对 SpringBoot 之注册 Web 组件有了更深入的理解。他们可以掌握如何使用注解和配置文件来注册各种 Web 组件,并能够在实际项目中灵活应用这些知识。希望这篇博客对读者有所帮助,让他们在 SpringBoot 开发中更加高效和便捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ(七)ACK 消息确认机制

目录 一、简介1.1 背景1.2 定义1.3 如何查看确认/未确认的消息数? 二、消息确认机制的分类2.1 消息发送确认1)ConfirmCallback方法2)ReturnCallback方法3)代码实现方式一:统一配置a.配置类a.生产者c.消费者d.测试结果 …

最优化方法Python计算:无约束优化应用——神经网络分类模型

Hello, 2024. 用MLPModel类(详见博文《最优化方法Python计算:无约束优化应用——神经网络回归模型》)和Classification类(详见博文《最优化方法Python计算:无约束优化应用——逻辑分类模型》)可…

TypeScript中的Declare关键字的作用

详细介绍TypeScript中的“declare”关键字的作用,这样你对*.d.ts文件就不陌生了。 当你在TypeScript项目中打开 *.d.ts 声明文件时,你可能会看到 declare 。你知道 declare 是做什么的吗?如果你不知道,读完这篇文章,也许你就会知…

安装VS Code到AWS EC2 Linux 2

文章目录 小结问题及解决参考 小结 本文记录了安装VS Code到AWS EC2 Linux 2。 问题及解决 安装VS Code到AWS EC2 Linux 2采取了以下步骤: 更新VS Code的YUM源: [ec2-userip-100-92-28-119 ~]$ sudo rpm --import https://packages.microsoft.com/k…

2023-12-02 青少年软件编程(C语言)等级考试试卷(一级)解析

2023-12-02 青少年软件编程(C语言)等级考试试卷(一级)解析 一、编程题(共5题,共100分)T1.数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精…

LanChatRoom局域网聊天室

CPP已经结课,我提交的项目是Qt的入门项目,局域网聊天室LanChatRoom。 这个代码重构了很多遍。第一遍是照着明哥推荐到书,把代码抄了一遍。 但抄下来之后,各种问题,而且是清朝老代码。抄了一遍之后,对代码的…

Python访问ElasticSearch

ElasticSearch是广受欢迎的NoSQL数据库,其分布式架构提供了极佳的数据空间的水平扩展能力,同时保障了数据的可靠性;反向索引技术使得数据检索和查询速度非常快。更多功能参见官网介绍 https://www.elastic.co/cn/elasticsearch/ 下面简单罗列…

python慕课版课后题答案,python慕课作业答案

这篇文章主要介绍了中国大学慕课python测验答案,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 Flag 8月29日前学习完MOOC_Python课程,以下各测试题均来自于Python…

数据结构-线性表-顺序存储

线性表概念 线性表是一种线性结构,它是由n(n≥0)个数据元素a1,a2,…,an组成的有限序列。 线性表的基本运算 初始化 Initiate (L):建立一个空表 L(),L 不含数据元素。 求表长度 Length(L):返回线性表 L 的…

深度学习|10.2 边缘检测示例 10.3 更多边缘检测

文章目录 如何在编程中实现卷积运算使用卷积实现边缘检测结果矩阵的元素正负性质的意义水平分类器如何构造卷积运算使用的矩阵 原矩阵通过一个过滤器(filter)/核心(kernel)来生成一个新的矩阵。 如何在编程中实现卷积运算 使用卷积…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档: https://kafka.apache.org/documentation/#security 在官方文档中,kafka有五种加密认证方式,分别如下: SSL:用于测试环境SASL/GSSAPI (Kerberos) :使用kerberos认证,密码是…

Redis:原理+项目实战——Redis实战3(Redis缓存最佳实践(问题解析+高级实现))

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理项目实战——Redis实战2(Redis实现短信登录(原理剖析代码优化)&#x…

golang利用alpn机制实现优先以http2协议访问服务端

文章目录 配置连接池发起请求 配置连接池 初始化http连接池 t1 : &http.Transport{Proxy: func(*http.Request) (*url.URL, error) {// 不读取HTTP_PROXY环境变量return nil, nil},DialContext: (&net.Dialer{// TCP握手超时Timeout: 3 * time.Second,// TCP协议的长…

【计算机毕业设计】SSM游戏点评网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

【总结】请求跨域及其终极解决方案

文章目录 跨域示例浏览器的同源策略跨域访问类型跨域解决方案方案 1:允许跨域,配置 CORS自定义 Filter 实现使用 Spring 自带的 CorsFilter使用 @CrossOrigin 注解SpringMVC 全局配置Spring Cloud Gateway 配置 CORS方案 2:实现同源请求代理服务器实现同源子域与父域修改(d…

使用UDF扩展Spark SQL

Apache Spark是一个强大的分布式计算框架,Spark SQL是其一个核心模块,用于处理结构化数据。虽然Spark SQL内置了许多强大的函数和操作,但有时可能需要自定义函数来处理特定的数据需求。在Spark SQL中,可以使用UDF(User…

视频剪辑技巧:制作视频画中画效果,背景图片的选取与运用

在视频剪辑中,画中画效果是一种常用的技巧,它可以在同一屏幕上展示两个或多个视频片段。这种效果在制作教程、比较两个物品或展示对话等场景中非常实用。现在一起来看看云炫AI智剪如何制作视频画中画效果,选取和运用背景图片的方法。 一起来看…

计算机网络---知识点

ARPANET----NFSNET—ANSNET—Internet发展及协议 移动互联网 物联网 无线自组网、无线传感器网络、无线个域网 ISO/OSI网络体系结构 TCP/IP网络体系结构 对等通信、PDU 电路交换、报文交换、分组报文交换 虚电路、数据报 信道复用技术 网络性能的主要指标&#xff08…

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人,已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…

RT-Thread内核移植

目录 前言一、实验平台简介1.1 W601简介1.2 RT-Thread简介1.3 ENV简介 二、开发环境搭建2.1 MDK安装2.2 Git安装2.3 RT-Thread相关下载2.4 其他素材 三、移植RT-Thread四、ENV使用五、W601开发板下载验证5.1 使用串口下载软件5.2 ST-Link下载 前言 本文以正点原子W601开发板为例…