web.xml在不同的Servlet版本下的区别

本文介绍了从Servlet 2.3到3.1不同版本的部署描述符(web.xml)示例,展示了随着JavaEE版本更新,XML schema的变化及命名空间的迁移。

1. Servlet 3.1 deployment descriptor

Java EE 7 XML schema, namespace is http://xmlns.jcp.org/xml/ns/javaee/

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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_3_1.xsd"
         version="3.1">
</web-app>

2. Servlet 3.0 deployment descriptor

Java EE 6 XML schema, namespace is http://java.sun.com/xml/ns/javaee

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	      version="3.0">
</web-app>

3. Servlet 2.5 deployment descriptor

Java EE 5 XML schema, namespace is http://java.sun.com/xml/ns/javaee

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	      version="2.5">
</web-app>

4. Servlet 2.4 deployment descriptor

J2EE 1.4 XML schema, namespace is http://java.sun.com/xml/ns/j2ee

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	      version="2.4">

  <display-name>Servlet 2.4 Web Application</display-name>
</web-app>

5. Servlet 2.3 deployment descriptor

J2EE 1.3 DTDs schema. This web.xml file is too old, highly recommend you to upgrade it.

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Servlet 2.3 Web Application</display-name>
</web-app>


参考  http://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/






<think>我们正在讨论的是如何在web.xml中配置Servlet 5.0版本。根据引用[1]中提供的示例,我们可以类似地修改web.xml的声明部分以支持Servlet 5.0。需要注意的是,Servlet 5.0对应的Java EE规范已经改名为Jakarta EE,所以命名空间和模式位置(schema location)会有所不同Servlet 5.0是Jakarta EE 9的一部分,它使用了新的命名空间:`https://jakarta.ee/xml/ns/jakartaee`。因此,配置Servlet 5.0web.xml文件头应该使用这个新的命名空间。 以下是配置Servlet 5.0版本web.xml文件头的示例: ```xml <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0" metadata-complete="false"> <!-- 在这里配置Servlet、Filter、Listener等 --> </web-app> ``` 解释: - `xmlns`:指定了默认的命名空间为Jakarta EE 9的命名空间(Servlet 5.0)。 - `xmlns:xsi`:定义了XML Schema实例的命名空间。 - `xsi:schemaLocation`:指定了命名空间对应的XSD文件的位置。这里指向Servlet 5.0的XSD文件(web-app_5_0.xsd)。 - `version`:设置为5.0,表示使用Servlet 5.0规范。 - `metadata-complete`:设置为false,表示容器除了web.xml之外还要检查注解(如@WebServlet)来部署组件。如果设置为true,则只使用web.xml中配置的组件,忽略注解。 注意:Servlet 5.0需要运行在支持Jakarta EE 9的服务器上,例如Tomcat 10(及以上版本)、Jetty 11等。 在Maven项目中,你还需要在pom.xml中配置相应的Servlet API依赖,注意Servlet 5.0的依赖groupId已经由`javax.servlet`改为`jakarta.servlet`: ```xml <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> ``` 配置完成后,重新加载Maven项目,并确保你的Web服务器支持Servlet 5.0。 §§相关问题§§ 1. 如何将现有的Servlet 4.0项目升级到Servlet 5.0? 2. Tomcat 10如何配置支持Servlet 5.03.Servlet 5.0中,如何使用注解(如@WebServlet)配置Servlet4. 为什么Servlet 5.0的依赖groupId改为`jakarta.servlet`? </think>### 在 `web.xml` 中配置 Servlet 5.0 版本的方法 要正确配置 Servlet 5.0 版本,需修改 `web.xml` 的命名空间和模式定义。以下是完整配置方法: #### 步骤 1:更新 `web.xml` 文件头 使用 Jakarta EE 9+ 的命名空间(Servlet 5.0 是 Jakarta EE 9 的一部分): ```xml <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0" metadata-complete="false"> <!-- 在此配置Servlet --> </web-app> ``` 关键改动: 1. `xmlns` 改为 Jakarta EE 命名空间:`https://jakarta.ee/xml/ns/jakartaee` 2. `xsi:schemaLocation` 指向 Servlet 5.0 的 XSD 文件:`https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd` 3. `version="5.0"` 明确版本4. `metadata-complete="false"` 允许使用注解配置[^1] #### 步骤 2:添加 Maven 依赖 在 `pom.xml` 中使用 Jakarta Servlet 5.0 API: ```xml <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> ``` > ⚠️ **注意**:Servlet 5.0 开始使用 `jakarta.servlet` 包名(而非 `javax.servlet`),确保代码中导入正确: > ```java > import jakarta.servlet.*; > import jakarta.servlet.http.*; > ``` #### 步骤 3:验证配置 检查项目结构: ``` src └── main ├── java ├── resources └── webapp └── WEB-INF └── web.xml # 包含上述配置 ``` #### 配置示例 ```xml <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="5.0" xsi:schemaLocation="..."> <servlet> <servlet-name>UserServlet</servlet-name> <servlet-class>com.example.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserServlet</servlet-name> <url-pattern>/users/*</url-pattern> </servlet-mapping> </web-app> ``` ### 关键注意事项 1. **服务器兼容性**:需使用支持 Jakarta EE 9+ 的服务器,如: - Tomcat 10+ - Jetty 11+ - WildFly 25+ 2. **注解支持**:`@WebServlet` 注解需配合 `metadata-complete="false"` 才能生效 3. **包名迁移**:所有代码中的 `javax.servlet.*` 需改为 `jakarta.servlet.*` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值