如何将 servlets API 添加到我的项目的 pom.xml
mvnrepository.com 有很多 servlet api 和类似名称的项目,我不知道哪个是正确的。或者他们都好吗?
我相信大多数 web/app 服务器都捆绑了一个版本的 servlet api,所以你不会想把 api 捆绑到你的 .war 文件中。您需要找出服务器中包含的版本,然后您可以使用
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api-version}</version>
<scope>provided</scope>
</dependency>
用您的版本替换 servlet-api-version。您需要指定“提供的”范围,以便 api.jar 不包含在您的 war 文件中。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
对于 servlet-api 3.1.0,声明如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
我们用
<dependency>
<groupId>javax</groupId>
<artifactId>j2ee</artifactId>
<version>1.4</version>
<scope>provided</scope>
</dependency>
但如果您只需要 servlet api,您可能需要使用
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>?</version>
<scope>provided</scope>
</dependency>
这取决于您使用的 servlet API 版本。
javax.servlet工件将为所有 servlet API 版本提供 jar 。
当您不想将 jar 文件放在WEB-INF/lib
文件夹中时,可以使用提供的范围,而是在运行时通过容器或 JDK 提供它。
近年来,Oracle 将 Java EE 技术转移到了Eclipse 基金会。那里的技术已重命名为Jakarta EE。所以Java Servlet现在被称为Jakarta Servlet。
更改名称是为了尊重 Oracle 的商标。进行网络搜索以查找许多讨论此过渡的文章和视频。
此名称更改包括将类的包命名从 更改javax.*
为jakarta.*
。这是一个突破性的变化,尽管更新您的项目可能就像仅仅更改您的import
语句一样简单。但请检查您依赖的任何库是否也有使用新命名的可用版本。
这种转变带来了 Servlet 规范的新版本。该规范的第 5 版与Servlet 4相同,但具有新的命名。
对于当前版本,编辑您的POM文件以使用以下 Maven 依赖项。在版本编号中检查您选择的 Maven 存储库中的更新。
您可以将使用 Servlet 5 构建的 Web 应用程序部署到 Web 容器,例如 Tomcat 10.0.x、Jetty 11.0.x、Glassfish 6 等。
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
Jakarta Servlet 6规范目前正在开发中,并将包含重大更改。该规范将于 2022 年晚些时候最终确定。
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>