表单提交触发HTTP 404错误:Inscription Servlet/JSP问题求助
解决注册表单提交时的HTTP 404错误问题
你的注册表单点击提交后出现404,核心原因是表单提交路径未匹配Web应用上下文,再加上Servlet配置重复的潜在隐患,下面一步步帮你修复:
1. 修正表单的提交路径
你表单里写的action="/inscription"是绝对路径,会直接指向服务器根目录,而不是你Web应用的上下文路径(比如你的应用部署在/sdzee-pro这类路径下)。正确的做法是用JSTL的<c:url>标签自动生成带上下文的正确URL:
修改inscription.jsp中的form标签:
<form method="post" action="<c:url value="/inscription"/>">
这样生成的路径会自动带上你的应用上下文(比如/sdzee-pro/inscription),就能精准匹配到你的Servlet了。
2. 统一Servlet的配置方式
你现在同时使用了@WebServlet("/inscription")注解和web.xml中的Servlet映射,虽然这不是404的直接原因,但可能引发配置冲突。建议二选一:
- 偏好注解配置:直接删除
web.xml里的<servlet>和<servlet-mapping>节点,@WebServlet已经足够完成映射工作。 - 偏好XML配置:删除Servlet类中的
@WebServlet("/inscription")注解,保持配置的一致性。
3. 调整doPost方法以匹配预期行为
你当前的doPost调用了doGet,提交后会转发回注册表单页面。如果想要返回空白页面,可以修改doPost方法:
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 返回空白页面 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(""); }
按照以上步骤修改后,提交表单就不会再出现404错误,且能符合你预期的返回空白页面的需求。
内容的提问来源于stack exchange,提问作者Slim
相关产品推荐
相关产品推荐

