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的例項,那需要轉換一下)
有緣再更新,與各位同仁互勉。
轉載請註明出處,謝謝