首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP Servlet 註冊頁面 404 錯誤:相對路徑與 URL 映射不匹配解決方案

     編輯:程式設計綜合問答

錯誤場景重現

<form action="addUser" method="post"> ... </form>

Servlet 映射:@WebServlet("/addUser") → URL 為 https://host:port/專案/addUser。

若 JSP 位於 /page/register.jsp,表單提交實際請求 /page/addUser → 404。

解決方案

  1. 使用絕對路徑(推薦):
    <form action="${pageContext.request.contextPath}/addUser" method="post">
    
  2. 相對路徑修正:
    <form action="../addUser" method="post">  // 從 /page/ 回上層
    
  3. Servlet 映射加前綴(不建議):
    @WebServlet("/page/addUser")
    

最佳實務:JSTL core

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<form action="<c:url value='/addUser'/>" method="post">

<c:url> 自動補上 contextPath 並處理編碼。

其他常見 404 原因

  • 專案未部署 / 未啟動(檢查 Tomcat webapps 目錄)。
  • web.xml 與註解衝突(Servlet 3.0+ 可無 web.xml)。
  • URL 大小寫敏感(Linux 環境)。

總結

表單 action 路徑必須與 Servlet 映射 URL 完全一致。使用 ${pageContext.request.contextPath} 或 <c:url> 產生絕對路徑,可徹底避免相對路徑導致的 404 問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved