关于servlet的@WebServlet注解。

使用@WebServlet注解配置Servlet
本文介绍如何使用@WebServlet注解来配置Servlet,包括其语法及如何指定URL映射。并通过示例对比了注解配置与web.xml配置文件方式的区别。

@WebServlet注解用于标注在一个继承了HttpServlet类之上,属于类级别的注解。

用法形如:

@WebServlet("/DisplayHeader1")


// 扩展 HttpServlet 类
public class DisplayHeader extends HttpServlet {


// 处理 GET 方法请求的方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


其中 /DisplayHeader1 表示访问该servlet的 url 映射(地址)(此处为相对路径,即 “项目名称/DisplayHeader1” )。


该注解的作用等价于 在web.xml中配置的该servlet的<servlet-mapping>元素中<url-pattern>的配置,比如:

<servlet>
<!-- 类名 -->
<servlet-name>DisplayHeader</servlet-name>
<!-- 所在的包 -->
<servlet-class>test.DisplayHeader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayHeader</servlet-name>
<!-- 访问的网址 -->
<url-pattern>/DisplayHeader2</url-pattern>
</servlet-mapping>

此时,访问如下两个路径的效果是一样的,不互斥:

http://localhost:8080/test/DisplayHeader1

http://localhost:8080/test/DisplayHeader2

此为在本机上进行的测试,其中test为项目名称。

如果程序运行说找不到servlet可以将注解式替换为原始xml配置文件的方式即可。


### 如何使用 `@WebServlet` 注解配置 Servlet #### 配置方式概述 自 Servlet 3.0 开始,引入了基于注解的配置方法,使得开发者无需通过传统的 `web.xml` 文件手动注册和配置 Servlet。`@WebServlet` 是用于定义 Servlet 的核心注解之一,它能够替代大部分 `web.xml` 中的功能[^1]。 --- #### 属性详解 以下是 `@WebServlet` 注解的主要属性及其作用: | **属性名** | **描述** | |------------------|---------------------------------------------------------------------------------------------| | `name` | 定义 Servlet 的名称,默认为类名。 | | `value` 或 `urlPatterns` | 指定 Servlet 的 URL 映射路径,两者功能相同,可选其一。 | | `loadOnStartup` | 设置 Servlet 是否在应用启动时加载。如果值小于等于零,则表示延迟加载;大于零则按顺序初始化。 | | `initParams` | 初始化参数列表,可以通过 `@WebInitParam` 来指定键值对形式的参数。 | 这些属性几乎涵盖了传统 `web.xml` 所能实现的所有功能[^2]。 --- #### 示例代码 下面是一个完整的 `@WebServlet` 注解使用的例子,展示了如何设置多个映射路径、初始化参数以及控制加载时机: ```java import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; 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 注解配置 Servlet @WebServlet( name = "AnnoServlet", value = {"/anno", "/anno2"}, // 多个 URL 路径映射 loadOnStartup = 1, // 应用启动时立即加载此 Servlet initParams = { @WebInitParam(name = "encoding", value = "UTF-8"), // 初始化编码参数 @WebInitParam(name = "maxSize", value = "10MB") // 自定义大小限制 } ) public class AnnoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String encoding = getInitParameter("encoding"); // 获取初始化参数 resp.setContentType("text/html;charset=" + encoding); resp.getWriter().println("<h1>Hello from AnnoServlet</h1>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); // 将 POST 请求重定向到 GET 方法处理 } } ``` 上述代码中: - `value` 属性指定了两个访问路径 `/anno` 和 `/anno2`。 - `loadOnStartup` 设为 `1` 表明该 Servlet 在容器启动时即被实例化并完成初始化。 - `initParams` 提供了一组初始化参数,可通过 `getInitParameter()` 方法获取它们的值[^4]。 --- #### 关于 `web.xml` 和 `@WebServlet` 的对比 尽管 `@WebServlet` 提供了极大的便利性,但在某些场景下仍可能需要保留部分 XML 配置文件的内容。例如当项目中有大量旧版 Servlet 需要兼容时,或者希望集中管理所有组件声明的情况下,继续沿用 `web.xml` 可能更为合适[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值