Javaweb開發中URL路徑的使用


  看到博客園孤傲蒼狼的web系列文章中有關於URL路徑的使用文章后,感覺自己對URL的使用清楚了很多,自己再對着動手寫一遍以加深記憶。

  JavaWeb開發中常看到URL以“/”開頭,但對於服務器端和瀏覽器端分別指不同的起點路徑。

如果“/”是給服務器用,則代表當前的web工程,自己理解就是指web目錄,如果“/”是給瀏覽器用,則代表webapps目錄。

一,“/”代表當前web工程的常見應用場景

1.ServletContext.getRealPath(String path)獲取資源的絕對路徑

如:this.getServletContext().getRealPath("/img/1.JPG)獲取1.JPG的絕對路徑中,img前面的“/”就是web工程。

2.在服務前端的forward轉發中

如:this.getServletContext().getRequestDispatcher("/index.jsp").forward(request,response);

客戶端請求某個web資源,服務器跳轉到另外一個web資源,這個forward也是給服務器用的,此時"/index.jsp"前面的“/”就是web工程,即web目錄。

3.使用include指令或者<jsp:include>標簽引入頁面

如<jsp:include page="/jsp/demo.jsp"/>

二.“/”代表webapps目錄的常見應用場景

1.使用sendRedirect實現請求重定向

如response.sendRedirect("/JavaWeb_Learning_Project/index.jsp");

服務器發送一個URL地址給瀏覽器,瀏覽器拿到URL地址后再次請求服務器,所以“/”是給瀏覽器使用,此時URL等價於“webapps\JavaWeb_Learning_Project\index.jsp”.

此外項目中通常用另一種更靈活的寫法代替上面的寫法,這樣在項目名稱改變時依然有效:

response.sendRedirect(request.getContextPath()+"/index.jsp");

此時request.getContextPath()獲取到的內容就是"/JavaWeb_Learning_Project”;

2.使用超鏈接跳轉,提交表單或html部分標簽中的src屬性

如:<a href="/JavaWeb_Learning_Project/index.jsp>首頁</a>,

<form action="${pageContext.request.contextPath}/demo5></form>,

 <img alt="驗證碼看不清,換一張" src="${pageContext.request.contextPath}/demo4" id="validateCodeImg" onclick="changeImg()" >

訪問web資源時,絕對路徑的寫法推薦使用img標簽中src屬性的寫法改進,即:

<a href="${pageContext.request.contextPath}/index.jsp>首頁</a>

3.js腳本和css樣式文件的引用


免責聲明!

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



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