尝试过的方法:

成功的方法:

新版本:

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

回退到旧版本:

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

但回退版本会导致还要修改依赖包,况且总不能放弃新版本的使用嘛。此时我才想起来,tomcat 是9.0版本,会不会是因为不支持新版本 jakarta 呢?

还真是,tomcat官网首页就解释了:

Jakarta EE 平台是 Java EE 平台的演进。Tomcat 10 及更高版本执行作为 Jakarta EE 一部分开发的规范。Tomcat 9 及更早版本执行的是作为 Java EE 一部分开发的规范。

最后换成 10.1.15 版本解决。