HTML跳转Servlet时出现404错误及后续重定向问题求助
Servlet开发问题排查与解决方案
登录表单提交触发404错误
- 现象:index.html登录表单
action="LoginServ",项目中存在LoginServ.java类,但提交后返回404 - 根因:
web.xml中的Servlet映射配置与Servlet类上的@WebServlet("/LoginServlet")注解冲突——两种映射方式重复定义,导致容器无法正确识别Servlet的访问路径 - 解决:删除
web.xml内对应的Servlet映射节点,仅保留注解或XML映射其中一种方式(推荐使用@WebServlet注解,配置更直观简洁)
Servlet重定向到login.html出现404错误
- 环境:Jakarta EE 6.0、Servlet 6.1、Apache Tomcat 10.1.24
- 现象:HTML页面间跳转正常,执行
response.sendRedirect(request.getContextPath() + "/login.html")时返回404,但response.sendRedirect("register.html?error=missingFields")可正常跳转 - 排查及解决步骤:
- 验证上下文路径配置:查看Tomcat部署配置中项目的Context Path,若Context Path被设为非空值,确认
request.getContextPath()返回值与实际部署路径一致;若Context Path为空,拼接后的路径为/login.html,需确保login.html在项目根目录 - 检查文件位置:确认login.html放置在项目的
src/main/webapp(或WebApp根目录)下,而非WEB-INF目录(该目录下资源无法直接通过外部URL访问) - 核对路径大小写:Tomcat在Linux/Unix环境下严格区分文件名大小写,确保代码中
login.html的大小写与实际文件名完全匹配 - 测试相对路径:尝试改用相对路径
response.sendRedirect("login.html"),若当前Servlet的映射路径与HTML文件处于同一层级,相对路径会直接生效;若Servlet在子路径下,可调整为../login.html
- 验证上下文路径配置:查看Tomcat部署配置中项目的Context Path,若Context Path被设为非空值,确认
内容的提问来源于stack exchange,提问作者user19102157
相关产品推荐
相关产品推荐

