tomcat IntelliJ servlet错误,无法打开servlet

4ngedf3f  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(220)

我正在尝试创建一个Web应用程序,并希望在提交HTML表单时打开一个java servlet。该servlet不断地给出错误(大多数是404错误),我尝试了我所看到的每一种解决方案,但没有一种有效。
第一个
Code organization
我在Apache Tomcat版本10.0.16上运行服务器。目前,我只是想让servlet打开并运行而不出错,然后计划向其添加代码。谢谢。

vuktfyat

vuktfyat1#

雅加达EE过渡

您的Servlet代码使用的是javax.*包名称。这仅适用于Tomcat 9和更早版本。将此类Servlet部署到Tomcat 10+将失败。
Tomcat 10+使用jakarta.*软件包。
此软件包名称更改与 Java EE 技术从Oracle转移到Eclipse基金会有关。在那里,该技术将被重命名为 Jakarta EE。在Web上快速搜索,将提供许多有关此转移的文章和视频。
你需要在使用老派命名和现代命名之间做出选择。对于更大的复杂项目,你可能希望继续老派命名,同时推迟到以后的时间过渡。如果开始一个新项目,我建议考虑现代命名。但是研究一下你需要的重要库是否已经在使用新命名的版本中发布。
如果选择现代命名,请调整您的POM以进行匹配。您正在编写一个从Servlet API中的类扩展的Servlet类。因此,您的IDE和编译器需要该Servlet API的副本以便进行编译。请确保使用providedscope标记您的POM,以便 * 不要 * 在最终Servlet工件中捆绑副本(可能是WAR文件)。您的Servlet容器(如Tomcat或Jetty)带有自己的Servlet API副本。请参见how to add the servlet api to my pom.xml,但请调整这些答案以使用适当的Jakarta命名。我添加了an Answer there

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

Tomcat版本

要知道Tomcat 9和10.0.* 是并行开发的等效产品。预期具有相同的功能和性能。包命名是主要区别。这两个版本的Tomcat分别实现了Servlet规范版本4.3和5。Servlet 5规范与4.3完全相同,只是法律的名称从 OracleJava 更改为 Eclipse FoundationJakarta
Tomcat 10.1.x目前正在开发中,以支持Jakarta Servlet 6规范。Tomcat 10.1.x现在作为alpha预发布版提供。Jakarta Servlet 6规范将于2022年晚些时候完成。

ewm0tg9j

ewm0tg9j2#

我搜索了很多,但最后注意到Basil Bourque的解释是正确的,因为你使用的是java jakarta,你需要使用tomcat 10+。仅此而已!:)

相关问题