Tomcat 8.5运行Web应用报404目标资源不存在错误求助
问题排查及修复方案
1. bagWeight参数解析错误(最直接诱因)
你在index.html中单选按钮的value值附带了 lbs后缀(比如value="80 lbs"),但Servlet中直接调用Double.parseDouble(request.getParameter("bagWeight"))解析,包含非数字字符会直接抛出NumberFormatException,Tomcat找不到配置的错误页就会返回你遇到的404报错。
修复方案:修改index.html中三个radio的value值,去掉后缀:
<input type="radio" id="80" name="bagWeight" value="80"/> <label for="80"> 80 lbs </label><br> <input type="radio" id="60" name="bagWeight" value="60"/> <label for="60"> 60 lbs </label><br> <input type="radio" id="50" name="bagWeight" value="50"/> <label for="50"> 50 lbs </label>
2. Servlet路径映射冲突
你在@WebServlet的urlPatterns中把/cost.jsp也配置成了Servlet的访问路径,当你在Servlet中forward到/cost.jsp时,请求会再次被路由到当前Servlet,形成死循环,最终也会导致资源无法访问。
修复方案:删除urlPatterns中的"/cost.jsp"项,修改后配置如下:
@WebServlet( description = "A controller for the Concrete Project application", urlPatterns = { "/ConcreteProjectServlet", "/getSlabHTML" })
3. 可选优化:JSP显示逻辑补全
你当前JSP页面没有输出Servlet中存入request的计算结果,修复路径问题后可以替换JSP中的占位符,显示计算内容:
<p>Here are the results of the project calculations:</p> <%= request.getAttribute("projectHTML") %> <p> <a href="index.html"> Calculate Again </a> </p>
4. 兜底检查项
如果修复后依然报错,检查以下配置:
- 确保你的项目web.xml头声明版本为3.0及以上,否则
@WebServlet注解不会生效 - 确认
cost.jsp文件确实放在WebContent(或webapp)根目录下,和index.html同级 - 清理Tomcat工作目录后重新部署项目,避免缓存旧的编译文件
内容的提问来源于stack exchange,提问作者Jordan Webster
相关产品推荐
相关产品推荐

