You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat运行Web应用时遭遇404错误求助:源服务器未找到目标资源的当前表示,或不愿披露其存在

解决Tomcat中"The origin server did not find a current representation..."错误

这个错误本质就是咱们常说的404资源未找到,结合你贴的代码和配置,咱们一步步来排查可能的问题:

1. Web.xml配置的致命问题:缺少Servlet定义

看你的web.xml里只写了<servlet-mapping>,但完全没有对应的<servlet>标签来告诉Tomcat每个servlet名称对应的Java类路径!比如你配置了<servlet-name>HomePage</servlet-name>的映射,但Tomcat根本不知道HomePage对应的是哪个类,自然无法处理请求。

解决办法:
在web.xml里添加每个servlet的定义,比如针对HomePage:

<servlet>
    <servlet-name>HomePage</servlet-name>
    <servlet-class>你的包路径.HomePage</servlet-class> <!-- 比如com.yourproject.HomePage,替换成实际包名 -->
</servlet>

其他如PostPage、RegisterPage等Servlet也需要添加对应的<servlet>定义,否则所有映射的请求都会找不到处理类。

另外,你在HomePage.java里已经用了@WebServlet注解,这时候注解和web.xml的映射可能冲突。建议二选一:要么保留注解删掉web.xml里的对应映射,要么删掉注解,用web.xml完整配置Servlet和映射。

2. 链接路径忽略了上下文根

你的index.jsp里的链接都是绝对路径,比如<a href="/register">,这种写法会直接指向Tomcat服务器的根目录,而不是你的Web应用的上下文根。比如你的应用部署在http://localhost:8080/myblog,那/register会请求http://localhost:8080/register,这肯定找不到资源。

解决办法:
用JSP内置对象获取上下文根,修改链接为:

<li><a href="${pageContext.request.contextPath}/register">Register</a></li>
<li><a href="${pageContext.request.contextPath}/login">Login</a></li>
<li><a href="${pageContext.request.contextPath}/panel">Panel</a> </li>
<li><a href="${pageContext.request.contextPath}/logout">Logout</a> </li>
<!-- 文章详情链接也要改 -->
<a href="${pageContext.request.contextPath}/post/${post.id}">Read more</a>

3. 数据库异常未处理,导致请求无响应

看你的HomePage的doGet方法,如果数据库连接失败或者SQL执行出错,只会打印异常,没有做任何转发或响应处理。这时候Tomcat因为没有收到任何响应,也会返回类似的资源未找到错误。

解决办法:
在catch块里添加错误处理,比如转发到错误页面:

catch (SQLException e) {
    e.printStackTrace();
    req.setAttribute("errorMsg", "加载文章失败:" + e.getMessage());
    RequestDispatcher errorView = req.getRequestDispatcher("error.jsp");
    errorView.forward(req, resp);
}

同时要检查DBUserConnector的实现是否正确,数据库驱动是否放在WEB-INF/lib目录下,数据库的URL、用户名、密码是否配置正确。

4. 检查JSP文件位置与类编译情况

  • 确保index.jsp放在Web应用的根目录(和WEB-INF同级),文件名大小写要和代码里的一致(Linux环境下Tomcat对文件名大小写敏感)。
  • 检查你的Servlet类(比如HomePage.java)是否已经正确编译到WEB-INF/classes目录下,包路径要和代码里的一致。

5. 查看Tomcat日志定位细节

如果上面的排查还没解决问题,去Tomcat的logs目录看catalina.out或localhost.log,里面会有更详细的错误信息,比如类加载失败、数据库连接异常、Servlet映射冲突等,这些日志能帮你快速定位具体问题。


内容的提问来源于stack exchange,提问作者brecho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:52:27