Servlet 使用 request.getRequestDispatcher("result.jsp").forward(req, resp) 轉發,瀏覽器地址欄顯示 https://host/pkg/servlet/result.jsp,導致 404。
RequestDispatcher 的路徑相對於 Web 應用根目錄,而非 Servlet 所在包路徑。若 JSP 放在 WEB-INF/jsp/,轉發路徑應為 /WEB-INF/jsp/result.jsp。
result.jsp 放在 WebContent/ 或 webapp/ 下,轉發路徑 result.jsp 或 /result.jsp。web.xml 或 SpringMVC 視圖解析器中設置前綴 /WEB-INF/views/,Controller 返回邏輯視圖名 result。request.getRequestDispatcher("/result.jsp")(以 / 開頭表示 Web 根)。錯誤結構:
src/
com/example/servlet/MyServlet.java
WebContent/
WEB-INF/
jsp/
result.jsp ← 放這裡需用 /WEB-INF/jsp/result.jsp
正確結構(方案 1):
WebContent/
result.jsp ← 直接放根目錄
WEB-INF/
web.xml
採用 MVC 模式:JSP 放在 WEB-INF/views/,配置 InternalResourceViewResolver 前綴 /WEB-INF/views/ 後綴 .jsp,Controller 僅返回視圖名,完全解耦物理路徑。