@WebServlet注解具有什么功能呢?

欢喜 Servlet 发布时间:2025-05-27 13:57:52 阅读数:14305 1

@WebServlet注解简介

`@WebServlet`是Java Servlet 3.0引入的一个标准注解(Annotation)
   用于声明一个类是Servlet
    并可以配置其URL映射、
	 初始化参数等信息
	 从而替代传统`web.xml`配置方式

`@WebServlet`注解主要功能

功能 描述
声明一个Servlet类 标记某个类继承自`HttpServlet` 并作为 Web 请求处理器
配置访问路径(URL 映射) 替代 `<url-pattern>`,指定该 Servlet 的访问地址
设置初始化参数 替代 `<init-param>`,为该 Servlet 提供启动参数
指定加载顺序(可选) 控制多个 Servlet 的加载顺序(不常用)

`@WebServlet`注解定义

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.Runtime)
public @interface WebServlet {
    String[] value() default {};
    String name() default "";
    String[] urlPatterns() default {};
    int loadOnStartup() default -1;
    WebInitParam[] initParams() default {};
    boolean asyncSupported() default false;
}

例 1:最简使用方式(仅配置 URL)

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.getWriter().write("Hello from @WebServlet");
    }
}
 
访问地址: 
http://localhost:8080/your-app/hello

例2:带多个 URL 映射和初始化参数

@WebServlet(
    urlPatterns = {"/welcome", "/greet"},
    initParams = {
        @WebInitParam(name = "adminEmail", value = "admin@example.com"),
        @WebInitParam(name = "maxAttempts", value = "5")
    },
    loadOnStartup = 1
)
public class WelcomeServlet extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        String adminEmail = config.getInitParameter("adminEmail");
        String maxAttempts = config.getInitParameter("maxAttempts");
        System.out.println("Admin Email: " + adminEmail);
        System.out.println("Max Attempts: " + maxAttempts);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.getWriter().write("Welcome to my site!");
    }
}

`@WebServlet`注解与`web.xml`对比

使用`web.xml`传统写法
```xml
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
    <init-param>
        <param-name>adminEmail</param-name>
        <param-value>admin@example.com</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>


使用`@WebServlet`后无需配置 `web.xml` 更加清晰

`@WebServlet`注解 注意事项

推荐使用 `@WebServlet` 
简化配置,提升开发效率
不要同时使用 `value()` 和 `urlPatterns()` 
    两者冲突会导致部署失败 
不要在生产环境依赖 `loadOnStartup` 
   可能影响启动性能 
支持通配符映射
   如 `/api/*`、`*.do` 等
     规则与 web.xml 一致

`@WebServlet`注解适用场景

场景 使用方式
快速开发小型项目 不需要复杂配置,直接用注解即可
微服务或模块化系统 每个模块独立配置自己的 Servlet
教学或演示用途 减少 XML 配置,便于理解
Spring Boot 底层整合 Spring Boot 内部也是基于此类注解构建
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202505/312.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者