首页 > 代码库 > 绝对路径与相对路径问题
绝对路径与相对路径问题
首先辨析“/”与“\”
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()
绝对路径与相对路径问题