首页 > 代码库 > 绝对路径与相对路径问题

绝对路径与相对路径问题

首先辨析“/”与“\”

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

java中的路径一般用“/”;如果用“\”需要对其转义成“\\”

1、绝对路径

  以根目录作为参考点的的文件或文件夹所在的路径,是硬盘上的真实路径。具有唯一性的特点。

  例如:C:\caosiege\python\project\C.py,代表的是C.txt的绝对路径

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()

 

绝对路径与相对路径问题