一般例如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,調用資源的時候需要寫/TaoBao/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的實例,那需要轉換一下)
有緣再更新,與各位同仁互勉。
轉載請註明出處,謝謝