絕對路徑與相對路徑問題


首先辨析“/”與“\”

window中的路徑一般用“\”;

java中的路徑一般用“/”;如果用“\”需要對其轉義成“\\”

1、絕對路徑

  以根目錄作為參考點的的文件或文件夾所在的路徑,是硬盤上的真實路徑。具有唯一性的特點。

  例如:C:\caosiege\python\project\C.py,代表的是C.py的絕對路徑

2、相對路徑

  相對於某個基准目錄的路徑。不具有唯一性。

  例如:在servlet中,“/”代表web應用的根目錄,與物理路徑相對應。

     在C:\caosiege中以上的絕對路徑可以寫成.\python\project\C.py這種相對路徑的形式。其中“.\”表示當前路徑。

     “..\”代表上一級目錄。

3、引伸:

  1)服務器端的地址

    服務器端的相對地址是指相對於你的web應用的地址,這個地址是在服務器端解析的。也就是說這個時候jsp與servlet的相對地址是相對於你的web應用。也就是相對於“http/192.168.0.1/webapp”。

  2)客戶端的地址

    所有的html頁面中的地址都是相對於服務器的根目錄“http/192.168.0.1”,而不是web應用的目錄。

    html中form表單的action屬性是相對於服務器根目錄的,所以如果提交到xxx.jsp,action=“/webapp/user/xxx.jsp”或action = “<%=request.getContextPath()%>”+

“/user/xxx.jsp”。

      一般情況下,在JSP/HTML頁面等引用的CSS,Javascript.Action等屬性前面最好都加上<%=request.getContextPath()%>,以確保所有的引用文件都屬於web應用中的目錄。

另外,應該盡量避免使用“/”,”./“,“../”等類似的相對該文件位置的相對路徑,這樣當文件移動時,很容易出問題。

4、獲取路徑的一些方法

    根目錄所對應的絕對路徑: request.getRequestURI() 
    文件的絕對路徑  : application.getRealPath(request.getRequestURI()); 
    當前web應用的絕對路徑 : application.getRealPath(“/”); 
    取得請求文件的上層目錄 : new File(application.getRealPath(request.getRequestURI())).getParent()

    文件的絕對路徑 : request.getSession().getServletContext().getRealPath(request.getRequestURL())
    當前web應用的絕對路徑 :servletConfig.getServletContext().getRealPath(“/”); 
    (ServletContext對象獲得幾種方式: 
    javax.servlet.http.HttpSession.getServletContext() 
    javax.servlet.jsp.PageContext.getServletContext() 
    javax.servlet.ServletConfig.getServletContext()

 


免責聲明!

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



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