web.xml 是 java Web 应用的传统部署描述符,用于配置 servlet、Filter 等;必须置于 WEB-INF/ 下,根元素为 并声明正确命名空间与版本;配置 Servlet 需先声明 再通过 映射路径;支持初始化参数、启动加载、欢迎页及错误页等增强配置;需注意 XML 合法性、类路径、URL 模式优先级及 web.xml 优先于注解。

web.xml 是 Java Web 应用的传统部署描述符(Deployment Descriptor),用于配置 Servlet、Filter、Listener、欢迎页、错误页等。虽然从 Servlet 3.0 开始支持注解(如 @WebServlet)替代部分配置,但在老项目、容器限制或需集中管理时,仍需手动编写 web.xml。
基本结构与声明要求
web.xml 必须放在 WEB-INF/ 目录下,根元素为 ,且需声明正确的 XML 命名空间和版本。推荐使用 Servlet 3.1+ 的 schema 声明(兼容性好、无需 DTD):
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd”
version=”4.0″>
配置一个 Servlet 的完整步骤
以名为 HelloServlet 的 Servlet 为例,需两步:声明 Servlet 类 + 映射访问路径。
- 声明 Servlet:用
标签指定名字和类名(含包路径) - 映射路径:用
将该名字绑定到 URL 模式(如/hello或*.do)
配置完成后,访问 http://localhost:8080/yourapp/hello 即可触发该 Servlet。
常用增强配置项
实际开发中常需补充以下设置:
- 初始化参数:在
内添加,Servlet 中通过getInitParameter()获取 - 启动加载:加
(数字越小优先级越高),让 Servlet 在应用启动时就实例化1 - 欢迎文件列表:在根元素内配置
,例如设index.jsp或home.html - 错误页映射:用
统一处理 404、500 等状态码或异常类
注意事项与常见问题
配置 web.xml 时容易出错的点:
- XML 格式必须严格合法:标签闭合、大小写敏感、属性值加引号
- Servlet 类必须有无参构造函数,且已编译到
WEB-INF/classes/或打包在WEB-INF/lib/的 JAR 中 - URL 模式不能冲突;通配符模式(如
/api/*、*.json)优先级低于精确匹配 - 如果同时用了注解和 web.xml,web.xml 的配置会覆盖注解(Servlet 3.0+ 规则)
不复杂但容易忽略细节,建议配置后检查控制台日志是否报 “Servlet … registered” 类提示。