原來是 Servlet、JSP 與 Spring 的版本之間的匹配出了問題。眾所周知,2018 年,Java EE 改名為 Jakarta EE。這導致一些 JAR 包的包名也在之后的版本中進行了更改。這對本項目的影響是,Spring 本身是不含 Servlet、JSP 的 JAR 包的,但其依賴這些 JAR 包。如果在 Tomcat 服務器中部署的項目使用了 Spring,則這部分的 JAR 包將由 Tomcat 服務器來提供。而問題在於,Spring 5.2.9.RELEASE 期望的 JAR 包前綴是 javax,而Tomcat 10.0.0 提供的 JAR 包前綴是 jakarta。因此,Spring 報了一個認為沒有 Servlet、JSP 的 JAR 包的錯。
(查看 Tomcat 的各版本對應的 Servlet 等的版本的網址是:http://tomcat.apache.org/whichversion.html)
由於 Tomcat 與 Servlet、JSP 的 JAR 包關系密切,因此無法通過替換 Tomcat 下的文件夾 lib 中 Servlet、JSP 的 JAR 包來解決。而且這也無法通過在 Maven 中添加正確的 Servlet、JSP 依賴來解決,實際上,如果該工程的純 Java 代碼的部分沒有使用到 Servlet、JSP 的 JAR 包,其實這里在 Maven 添加的 Servlet、JSP 依賴都可以刪掉。(更專業的說法是,在基於 Maven 的 Web 應用中,對 Servlet、JSP 的依賴范圍為 provided。)
幸運的是,Tomcat 9.0.41 使用的 JAR 包前綴是 javax 。因此,這里只需要再安裝一個Tomcat 9.0.41 即可解決(不需要卸載已有的 Tomcat,因為不同版本的 Tomcat 的安裝路徑可以不同,只是安裝時需要先關閉已有的 Tomcat 服務器,避免占用同一個端口號)。