从 SpringBoot 2.1.0.RELEASE 版本开始 servlet-api 版是 4.0.1 了,对应 Tomcat9。之前的版本用的 servlet-api 3.1.0 对应 Tomcat8。
我遇到的 Servlet 有关的坑
错误1:NoSuchMethodError: HttpServletMapping
Exception Processing ErrorPage[errorCode=404, location=/index.html] java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping
这个错误仅在我IDEA开发环境用 jar 包方式启动 SpringBoot2 才有,发布到 Tomcat9 正式环境是没有的。具体原因是 SpringBoot2 用的是 servlet v4,而 spring boot web 用的是 servlet v3 导致的。但尝试在 pom.xml 中降级为 tomcat8 及添加 javax.servlet-api.jar 等都不行,搞了半天死活没搞定,绝望之际在 IDEA > Project Structure > Modules 中,给项目强行引入 javax.servlet-api-4.0.1.jar 再删除它居然解决了,真神奇!实际上开发环境根本用不到 javax.servlet-api-4.0.1.jar 依赖的,我只是引入后再删除而已。总之问题是解决了,操作如图: