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

登录页面提交表单报404错误,JSP调用Servlet跳转WEB-INF页面路径排查

登录提交404问题解决方案

问题原因

  • 表单提交路径配置错误
    login.jsp中form的action属性写为/Login属于服务器根路径的绝对路径,Java Web项目部署时会带有上下文路径(例如项目部署后根路径为http://localhost:8080/项目名/),直接写/Login会将请求发送到http://localhost:8080/Login,而非正确的项目内路径,因此触发404错误。
  • Servlet配置重复
    同时使用了@WebServlet(urlPatterns = {"/Login"})注解和web.xml中的Servlet注册配置,两类配置作用重复,容易引发路由冲突。
  • web.xml中Servlet类路径配置不全
    web.xml的<servlet-class>标签仅填写了Login,如果Login类定义在自定义包下,未填写全类名会导致服务器无法找到对应的Servlet类。

修复步骤

  1. 修改表单提交路径
    将login.jsp中的form标签调整为如下内容,去掉action前的斜杠使用相对路径即可:
<form method="post" action="Login">
     <input type="text" id="username"  name="username" placeholder="Usuário">
     <input type="password" id="password"  name="password" placeholder="Senha">
     <input type="submit"  value="Entrar">
</form>

如果需要适配不同部署环境的上下文路径,也可以替换为EL表达式写法:action="${pageContext.request.contextPath}/Login"。

  1. 清理重复的Servlet配置
    二选一保留一套配置即可:要么删除web.xml中的<servlet>和<servlet-mapping>两段配置,要么删除Login类上的@WebServlet(urlPatterns = {"/Login"})注解。

  2. 补全Servlet全类名
    如果保留web.xml的配置方案,需要将<servlet-class>标签的内容替换为Login类的完整路径,例如Login类存放在com.test包下,就修改为<servlet-class>com.test.Login</servlet-class>。

内容的提问来源于stack exchange,提问作者Vitória Natália

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:03