[英]Servlet address is incorrect
我正在嘗試創建一個servlet,我正在使用Tomcat 7。 我在webapps文件夾中為我的應用程序添加了一個文件夾,它看起來像這樣:
--[webapps]
--[agtel]
--[web-inf]
--[classes]
--add.class
--web.xml
--index.html
web.xml包含:
<servlet>
<servlet-name>add</servlet-name>
<servlet-class>add</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>add</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
和index.html包含:
<FORM METHOD=GET ACTION="/add">
當我按下提交按鈕時,它會嘗試訪問:
http://localhost:8080/add
這會導致404錯誤。 但如果我改成它
http://localhost:8080/agtel/add
然后它當然執行applet
所以我嘗試將html文件中的URL更改為
<FORM METHOD=GET ACTION="agtel/add">
但后來它試圖訪問:
http://localhost:8080/agtel/agtel/add
為什么現在兩次添加名稱? 這非常令人困惑,讓我發瘋。
當您在HTML中使用URL時,沒有前導/它們相對於當前URL。 領先/他們絕對:
<FORM METHOD=GET ACTION="/agtel/add">
要么
<FORM METHOD=GET ACTION="add">
會做你想做的。
我建議你在動作路徑中添加上下文dinamically示例(在JSP中):
<FORM METHOD=GET ACTION="${pageContext.request.contextPath}/add">
有了這個,您將永遠不必更改路徑,例如,如果您移動文件或復制代碼。 當然你需要一個index.jsp。
這就是所謂的“上下文”路徑。 如果您在同一個Tomcat(或任何應用程序服務器)上運行多個應用程序,它會區分對它們的訪問。 當您將路徑從“/ add”更改為“add”(無前導斜杠)時,它應該可以正常工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.