1. 程式人生 > >java web專案中的路徑問題(帶不帶“/”)

java web專案中的路徑問題(帶不帶“/”)

一般例如jsp,css,js之類的檔案以及專案自帶的圖片資源什麼的都是放在專案名/WebContent目錄下(也可能是專案名/Webapp),以下事實基於這個環境下,並假設我有一個專案叫TaoBao,下面是目錄

如圖,jsp直接暴露在WebContent目錄下,images中是各種圖片,js中有.js和.css檔案

java web中訪問資源的幾種方法:

//重定向

response.sendRedirect("/moubao/index.jsp");

//轉發

request.getRequestDispatcher("/index.jsp").forward(request, response);

//超連結

<a href='/moubao/index.jsp' />

//表單提交

<form action='/moubao/index.jsp'>...</form>

以上4中方式,除了轉發是由伺服器發起的路徑,其他都是瀏覽器發起的(大家明白這句話我想表達的意思就可以了)

路徑開頭直接“/”表示當前路徑

結論:

1、瀏覽器發起的請求中的“/”表示“Tomcat/webapps”目錄下,比如你在瀏覽器中輸入“localhost:8080/TaoBao”中的“/”就是表示Tomcat/webapps,呼叫資源的時候需要寫/Demo/index.jsp

2、而伺服器發起的請求中“/”表示“Tomcat/webapps/TaoBao”的目錄,呼叫的時候寫/index.jsp

注意到區別了嗎

根據以上結論,比方說,我在cart.jsp中需要訪問另一個jsp頁面或者images中的圖片

<a href="/TaoBao/details.jsp></a>

<img src="/TaoBao/images/001.jpg>

或者也可以這樣,利用”..“切換到目錄/TaoBao之下

<a href="../details.jsp></a>

<img src="../images/001.jpg>

專案如果要重新命名什麼的,你也可以選擇String path = request.getContextPath();來獲取當前專案,System.out.print(path)在我當前專案下的輸出結果就是 /TaoBao,(ps:在.jsp中可以直接這樣呼叫方法;在.java中如果想使用這個方法需要注意的是request是HttpServletRequest類的例項,如果你的方法中request是ServletRequest的例項,那需要轉換一下)

有緣再更新,與各位同仁互勉。

轉載請註明出處,謝謝