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

Eclipse开发Web应用遇HTTP 404错误:/EditForm资源无法访问求助

解决HTTP 404 - /EditForm 资源不可用的问题

看起来你卡在这里好几个小时了,我帮你梳理下导致404的核心问题,还有几个后续会踩的坑:

1. 表单提交路径是最可能的元凶

你表单里写的ACTION="/EditForm"是服务器根路径,意思是直接请求http://你的服务器地址/EditForm,但你的Web应用部署在/Website这个上下文路径下,正确的请求地址应该是http://你的服务器地址/Website/EditForm,这就导致服务器找不到对应资源。

修复方案:

  • 用相对路径(去掉开头的斜杠):ACTION="EditForm",这种方式会基于当前页面的路径提交,适合你的editProfile.jsp和Servlet在同一上下文的场景。
  • 或者用JSP的EL表达式动态获取上下文路径(更通用,避免后续上下文路径变更出问题):
<form CLASS="form-horizontal" METHOD=POST ACTION="${pageContext.request.contextPath}/EditForm">
  <div class="form-group">
    <label class="control-label col-sm-2"><b>New Address</b></label>
    <INPUT TYPE=TEXT PLACEHOLDER="Type new address here." NAME=address SIZE=20><BR>
  </div>
  <div class="submit_btn col-sm-2"><INPUT TYPE=SUBMIT></div>
</form>

2. Servlet映射存在配置冲突

你同时用了@WebServlet("/EditForm")注解和web.xml里的<servlet>配置,但web.xml里没有添加<servlet-mapping>节点。虽然Servlet 3.0+支持注解映射,但如果项目配置有问题,可能导致注解不生效。

修复方案:

  • 二选一:要么保留注解,删除web.xml里的<servlet>配置(避免冲突);要么在web.xml里补充映射规则:
<servlet>
  <servlet-name>EditForm</servlet-name>
  <servlet-class>user.EditForm</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>EditForm</servlet-name>
  <url-pattern>/EditForm</url-pattern>
</servlet-mapping>

3. 确认项目部署的上下文路径

在Eclipse里右键你的项目 → Properties → Web Project Settings,查看Context root是否为Website。如果这里设置的不是/,那表单里的绝对路径/EditForm就不会自动带上上下文路径,自然找不到资源。

4. 提前规避后续的运行时错误

虽然这不是导致404的原因,但你的Servlet代码有个明显的坑:你尝试获取currForm参数,但你的表单里完全没有这个字段,这会导致currForm为null,调用currForm.equals("address")时直接抛出NullPointerException。

修复方案:

  • 在表单里添加隐藏字段传递currForm值:
<input type="hidden" name="currForm" value="address">
  • 或者修改Servlet逻辑,根据实际存在的参数判断(比如检查request.getParameter("address")是否不为空)。

另外,你的SQL语句存在严重的SQL注入风险,别用字符串拼接参数,改用PreparedStatement:

String sqlStmt = "UPDATE db.User SET address = ? WHERE username = ?";
PreparedStatement pstmt = op.getConnection().prepareStatement(sqlStmt);
pstmt.setString(1, request.getParameter("address"));
pstmt.setString(2, user);
pstmt.executeUpdate();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:24:46