SpringBoot使用注解扫描注册Java Web三大组件

devtools/2025/3/10 5:57:23/

使用注解扫描和注册Java Web三大组件(Servlet、Filter、Listener)非常方便。

1. Servlet 注册

Servlet 是 Java Web 开发的基础组件,用于处理客户端(通常是浏览器)发送的 HTTP 请求并生成响应。
Controller是基于 Servlet 的封装。

可以通过@WebServlet注解来注册Servlet,并使用@ServletComponentScan注解来扫描这些Servlet。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello MyServlet");resp.getWriter().write("Hello from MyServlet");}}

主类上添加@ServletComponentScan注解:

@SpringBootApplication
@ServletComponentScan
public class QvtuWeb002Application {public static void main(String[] args) {SpringApplication.run(QvtuWeb002Application.class, args);}}

2. Filter 注册

通过@WebFilter注解来注册Filter,同样需要使用@ServletComponentScan注解来扫描。

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter("/myServlet")
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {System.out.println("处理请求前的处理");filterChain.doFilter(servletRequest, servletResponse);System.out.println("处理请求后的处理");}
}

3. Listener 注册

通过@WebListener注解来注册Listener,同样需要使用@ServletComponentScan注解来扫描。

@WebListener
public class MyListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("----Web应用初始化完成----");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("----Web应用销毁之前----");}
}

4. 运行测试

运行项目的启动类,控制台输出项目启动的信息。
在这里插入图片描述
在浏览器中访问http://127.0.0.1:8080/myServlet,此时控制台输出访问结果信息。
在这里插入图片描述


http://www.ppmy.cn/devtools/165934.html

相关文章

Java基础面试题全集

1. Java语言基础 1.1 Java是什么? • Java是一种广泛使用的编程语言,最初由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它是一种面向对象的、基于类的、通用型的编程语言,旨在让应用程序“编写一次&…

IO多路复用(epoll)/数据库(sqlite)

1.poll: 1. poll使用链表管理文件描述符,对监测的文件描述符没有上限限制。 2. 文件描述符集合在应用层创建,需要实现应用层和内核层的反复拷贝 3. 需要应用层对集合表进行遍历,寻找到达的事件 4. 只能工作在水…

大模型混战:马化腾弯道超车,梁文锋破局,李彦宏开源重构,Kimi失利折戟

发布 | 大力财经 作者 | 魏力 导语,中国大模型“天时地利人和”之战:DeepSeek逆袭、腾讯后发制人与行业格局重构,Kimi后院起火,失利折戟,李彦宏开源重构。 AI 2.0时代的竞争逻辑 当前国产大模型市场格局多元&#x…

Qt 进度条与多线程应用、基于 Qt 的文件复制工具开发

练习1:Qt 进度条与多线程应用 题目描述 开发一个基于 Qt 的应用程序,该应用程序包含一个水平进度条(QSlider),并且需要通过多线程来更新进度条的值。请根据以下要求完成代码: 界面设计: 使用 QS…

Spring Boot 的事务回滚

1. 事务管理的复杂性 •需手动处理事务回滚(如Transactional(rollbackFor SQLException.class))。 •资源释放依赖 finally块,易遗漏。

Leetcode 刷题记录 05 —— 普通数组

本系列为笔者的 Leetcode 刷题记录,顺序为 Hot 100 题官方顺序,根据标签命名,记录笔者总结的做题思路,附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一:动态规划(卡达尼算法) 方法…

第11章 web应用程序安全(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的,已经过去3年时间了,最近利用闲暇时间,抓紧吸收,总的来说,第11章开始学习利用web应用程序安全,主要讲信息收集、dns以及burpsuite,现在的资产测绘也…

Vue 3 实现富文本内容导出 Word 文档:前端直出方案与优化实践

本文将深入讲解如何通过纯前端方案将富文本内容直接导出为符合中文排版规范的 Word 文档,对比传统服务端生成方案,本方案可降低服务器压力 80% 以上,同时支持即时下载功能。 一、功能全景图 该方案实现以下核心能力: ✅ 纯前端 W…