开门见山:Tomcat各版本适应于不同版本的其他工具(如Servlet、JSP),因而对于许多运行错误(如500转404),应该检查Tomcat版本是否过高(往往是版本过低)
一、遇到的问题
运行出错(HTTP:500转为404错误)
在 Servlet + JSP 的一个简单登录项目中,突然发现 jsp 页面无法互相跳转,并且浏览器报错内容为 500,后面刷新后为 404 错误,反复检查 Servlet 类和 jsp 文件均无逻辑问题,不由得计上心来。
错误截图
点击登录进行原定的跳转:
刷新页面后:
二、解决方法(降低Tomcat版本 or 提升Servlet版本)
方案1:降低Tomcat版本
从官网重新下载与项目中 Servlet 相对应版本的 Tomcat 即可。
Tomcat 版本适应规则
Q:哪里找当前 Servlet 版本号?
A:
如果是 IDEA,则在当前项目的 pom.xml 中找相应依赖的版本号;
如果是 Eclipse,则在新建本项目时应已指定,可在项目属性信息中查看。
方案2:提升 Servlet 版本
(注:此方法仅适用于 Tomcat 10(或更低)以下的情况,因为 Tomcat 10 将 JavaEE 更换成了 Jakarta EE,所以原 Servlet 包 "javax.servlet.“ 会更改为 “jakarta.servlet.”。所以看你源代码中是哪一个,若为 javax 则只能选择方案1,否则就修改源代码。)
版本提升方法
在 pom.xml 依赖中将 Servlet 改为以下内容:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>10.0.12</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>10.0.12</version>
</dependency>