我正在為我的服務器使用 JPA/Hibernate 5.4.2、Java Servlet API 4.0.1 和 Tomcat 9 構建一個小型網站。我使用 Eclipse JEE 4.11 作為我的 IDE。本質上,我在 Servlet 和 JSP 映射方面遇到了很多問題,我不明白為什么。在一個例子中,我有一個特定的 JSP 文件拒絕承認其他 JSP 文件,即使它們都在同一個文件夾中。例如,除非我添加文件夾名稱(例如“/jsp/Header.jsp”),否則它看不到我的頭文件(使用 包含)。但是,這樣做會弄亂我的所有其他頁面的 URL,從而阻止它們依次加載頁眉和頁腳。據我所知,就好像應用程序切換目錄以訪問給定文件,但它永遠不會恢復原狀,因此其他 URL 路徑變得無效,因為它們現在指向錯誤的位置。值得一提的是,這似乎不適用于我不得不使用相對 URL 的標簽。到目前為止,我已經通過在我的 URL 前加上 ${pageContext.request.contextPath} 來解決其中的許多問題,但是我遇到了這樣一種情況,即在訪問特定頁面后我的 URL 仍然變得混亂。我選擇使用 web.xml 文件(位于“webapp/WEB-INF”中)來映射我的 JSP 和 Servlet,下面分別提供了示例。請注意,Servlet 條目是由 Eclipse 生成的,但我使用相同的格式手動映射了我的 JSP 文件。我已經仔細檢查了 XML 文件以確保我沒有犯任何明顯的錯誤,但我還沒有找到任何錯誤。我在研究中發現的唯一一件事是映射的順序可能很重要,但從來沒有人真正提供過有關它的具體信息。我也試過在 Eclipse 中清理我的項目,刷新項目(因為在這樣做之前我遇到了視頻文件無法被我的應用程序識別的問題),并清理了我的 Tomcat 的工作目錄。這些似乎都沒有任何效果。 <servlet> <display-name>ExerciseListServlet</display-name> <servlet-name>ExerciseListServlet</servlet-name> <servlet-class>web.ExerciseListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ExerciseListServlet</servlet-name> <url-pattern>/ExerciseListServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>UserProfile</servlet-name> <jsp-file>/jsp/UserProfile.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>UserProfile</servlet-name> <url-pattern>/UserProfile</url-pattern> </servlet-mapping>有什么想法嗎?我很清楚我沒有以代碼的方式發布太多內容,但是這個問題在某個時候幾乎每個頁面都發生過,事實上我上次使用時沒有遇到這個問題這些系統告訴我,Tomcat、Hibernate 或 Eclipse 可能存在錯誤或錯誤配置。目前,我的系統出于完全不相關的原因拋出異常,但我相信我知道原因,所以我暫時不包括它。
1 回答

達令說
TA貢獻1821條經驗 獲得超6個贊
您只需刪除 web.xml 文件的所有內容。刪除它的所有 servlet 和相應的映射。
然后你可以通過添加 WebServlet Annotation 讓你的 Servlet 監聽特定的 url。在您的代碼中使用以下注釋。
@WebServlet(urlPatterns = "/ExerciseListServlet", loadOnStartup = 1, displayName = "ExerciseListServlet")@MultipartConfig
因此,只要您的 servlet 使用相關路徑和顯示名稱。
添加回答
舉報
0/150
提交
取消