将 servlet 4.0.1 升级到 servlet 5.0

Posted

技术标签:

【中文标题】将 servlet 4.0.1 升级到 servlet 5.0【英文标题】:upgrade servlet 4.0.1 to servlet 5.0 【发布时间】:2021-10-12 20:36:51 【问题描述】:

我正在。我正在为 servlet 4.0.1 使用以下 maven 依赖项

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
</dependency> 

当我升级到 servlet 5.0 时,我看到有一个新术语 'Jakarta' 并且 servlet5 带有 Jakarta API,具有以下 maven 依赖项。

<dependency>
  <groupId>jakarta.servlet</groupId>
  <artifactId>jakarta.servlet-api</artifactId>
  <version>5.0.0</version>
</dependency>

所以,我尝试在互联网上搜索但找不到以下问题

    请解释一下这个新术语 Jakarta,比如它是如何出现的? 这是使用 Jakarta API 升级 servlet 5.0 的唯一方法。我们可以使用旧的“javax.servlet-api”吗? 我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api 将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?

如果有的话,还请推荐任何文档以供参考

【问题讨论】:

您希望 Servlet 5 提供哪些具体功能? 升级到servlet 5.0的主要原因是Jetty11。因为这是 Jetty11 的先决条件。 @AshishGoyanka 那么您可能只需要在部署描述符中更改 servlet 规范版本... 【参考方案1】:

Servlet 规范

你说:

我正在将 servlet 4.0.1 升级到 servlet 5.0。

除了从 javax.*jakarta.* 包命名之外,Servlet 规范在 4.0 和 5.0 之间没有显着变化。

从 Servlet 4 迁移到 Servlet 5,您将受益于任何新功能或改进。

码头

你评论过:

升级到 servlet 5.0 的主要原因是 Jetty11。因为这是 Jetty11 的先决条件。

Jetty 10 与 Jetty 11 相同,但包名称从 javax.* 更改为 jakarta.*。这两个版本是并行开发的。 Jetty 11 中没有比 Jetty 10 更好的功能或改进。

(顺便说一句,Apache Tomcat 9.x 和 Tomcat 10.0 也是如此,包命名更改的并行版本。)

如果您现在想保守一点,请坚持使用 Jetty 10 和 javax.* 包命名。如果你想为未来做准备,请使用 Jetty 11 和jakarta.* 包命名。


many articles, presentations, and interviews 是关于 Oracle 公司将 Java EE 的控制权移交给 Eclipse 基金会以及随之而来的更名为 Jakarta EE 的过渡。您确实应该对这个 Oracle 到 Jakarta 的主题进行一些基本的行业研究,以了解这些变化。 Start with Wikipedia.

【讨论】:

【参考方案2】:
    请解释一下这个新术语 Jakarta,比如它是如何出现的?

Oracle 维护 Java EE,2017 年 9 月 Oracle 宣布 Java EE 将提交给 Eclipse 基金会。 “Java”是 Oracle 拥有的商标,因此“Java EE”更名为“Jakarta EE”。

    这是使用 Jakarta API 升级 servlet 5.0 的唯一方法。我们可以使用旧的“javax.servlet-api”吗? 我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api

包含 Servlet 4.x 的 Jakarta EE 8 的第一个版本,它与 Java EE 8 兼容。Java EE 8 和 Jakarta EE 8 都使用 javax.* 命名空间。

无论你使用哪一个都可以互相工作。

将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?

要升级到 Servlet 5.0,您必须使用 Jakarta EE 9。从 Jakarta EE 9 起,命名空间从 javax.* 更改为 jakarta.*,因此您必须将所有 javax.* 包导入更改为 jakarta.* 包。

另外,如果您使用任何其他库,则必须使用兼容版本。

Jakarta EE Web API 的 maven 依赖项如下。

<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-web-api</artifactId>
    <version>9.1.0</version>
    <scope>provided</scope>
</dependency>

参考号:GitHup Template for Jakarta EE 9 Web

【讨论】:

以上是关于将 servlet 4.0.1 升级到 servlet 5.0的主要内容,如果未能解决你的问题,请参考以下文章

servle学习

JavaWeb-Servle介绍

servlet下载文件

ServletConfig 接口

Servlet的用法

javaee学习-servlet初始化参数