Tomcat双Servlet通信报404资源不可用问题排查
问题原因
你的问题同时存在部署目录配置错误和Java代码错误两类问题,具体错误点和修复方案如下:
1. 致命部署目录拼写错误
Tomcat标准Web应用配置目录必须命名为WEB-INF,你当前目录写的是WEB_INF(下划线代替了横杠),Tomcat无法识别该目录,导致你写的web.xml配置完全不生效,所有Servlet映射都没有被注册。
修复方案:将WEB_INF文件夹重命名为WEB-INF。
2. Servlet转发路径配置错误
你在web.xml中给servlet2配置的访问路径是/form-resp,但servlet1的转发代码里写的是:
RequestDispatcher rd = req.getRequestDispatcher("servlet2");
getRequestDispatcher的参数需要填Servlet的映射路径,不是Servlet的类名/注册名,相对路径还会基于当前请求路径拼接,最终导致请求指向了不存在的路径,就是你看到的报错内容。
修复方案:将上述代码修改为:
RequestDispatcher rd = req.getRequestDispatcher("/form-resp");
3. 额外可优化错误
你servlet2里的include代码也存在同样的路径错误,如果需要保留该逻辑,需要修改为:
RequestDispatcher rd = req.getRequestDispatcher("/form");
如果不需要引入servlet1的输出,可以直接删除这段include代码,避免表单重复渲染。
内容的提问来源于stack exchange,提问作者pierbin24
相关产品推荐
相关产品推荐

