jsp表單無法訪問Servlet;路徑問題


在使用servlet處理jsp時發現很多提交表單時發生的錯誤都是因為提交路徑出錯造成的。

就是一直報404,的問題。

web.xml配置如下:

<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>Com.Ren.Servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/Servlet/LoginServlet</url-pattern>
</servlet-mapping>


(1)當login.jsp和login.html中form表單配置如下


<form action="Servlet/LoginServlet" method="get">
用戶名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>

是可以正常訪問

(2)當login.jsp和login.html中form表單配置如下時(多加了一個/):
<form action="/Servlet/LoginServlet" method="get">
用戶名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
就無法訪問,報404

(3)當login.jsp中form表單配置如下時:
<form action="${pageContext.request.contextPath}/Servlet/LoginServlet" method="get">
用戶名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>

或者 login.html中表單為:
<form action="/虛擬目錄/Servlet/LoginServlet" method="get">
用戶名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>

或者(前面加一個.)
<form action="./Servlet/LoginServlet" method="get">
用戶名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>

都是可以正常訪問的


總結:

(1) /    代表根目錄(就是tomcat軟件中webapps目錄)

(2) .  代表當前目錄(個人設置的虛擬目錄其實就等於idea中webapp目錄)


補充:
關於重定向和轉發遇到的路徑問題
有一個很好地觀點:https://blog.csdn.net/qq_42744046/article/details/105110803
是說:在用地址的時候,需要判斷是給瀏覽器用還是給服務器用。如果是給瀏覽器用需要加上虛擬地址;如果是給服務器用就不需要加上虛擬地址;
這也很好理解:瀏覽器是訪問別人的資源,地址當然要詳細,“/” 所代表的根目錄是tomcat服務器下的webApps目錄。
而服務器的轉發只是轉發自己內部的資源,所以它的"/"根目錄就是代表虛擬目錄;
簡而言之:就是服務器項目中使用的根目錄“/”就是虛擬目錄;瀏覽器使用的根目錄“/”是tomcat下webapps目錄;


 

 

 今天練習文件上傳,關於Io流中“/”路徑問題,因為我做的事WEB項目,所以該處的“/”根路徑表示tomcat所安裝目錄的根路徑,此處是D盤;

還是,看路徑的時候,需要想到是誰在用,就能想明白根路徑在哪了;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM