这篇文章主要介绍了JAVA文件中如何获取路径,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强> 1。基本概念的理解强>
“绝对路径”:你应用上的文件或目录在硬盘上真正的路径,如:URL、物理路径
例如:
c:/xyz/用法代表了用法文件的绝对路径;
http://www.sun.com/index.htm也代表了一个URL绝对路径;
的相对路径”:相对与某个基准目录的路径,包含网络的相对路径(HTML中的相对目录)。
例如:
在Servlet中,“/按硗缬τ玫母柯?和物理路径的相对表示。
例如:
“。/按淼鼻澳柯?“. ./贝砩霞赌柯肌U庵掷嗨频谋硎?也是属于相对路径。
<强> 2。关于JSP/Servlet中的相对路径和绝对路径。强>
<强> 2.1服务器端的地址强>
的服务器端的相对地址”:指的是相对于你的网络应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在JSP和Servlet中的相对地址应该是相对于你的网络应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
”提出:Servlet中的request.getRequestDispatcher(地址);“这个地址是在服务器端解析的,所以,你要前进到a.jsp应该这么写:
“request.getRequestDispatcher (“/user/a.jsp”)“这个/相对于当前的网络应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
<强> 2.2客户端的地址强>
的所有的html页面中的相对地址”都是相对于服务器根目录(http://192.168.0.1/)的,而不是(根目录下的该网页应用的目录)http://192.168.0.1/webapp/的。
html中”的形式表单的行为属性的地址”应该是相对于服务器根目录(http://192.168.0.1/)的,所以,如果提交到a.jsp为:action=?webapp/user/a.jsp"或action=?user/a.jsp",提交到Servlet为action=?webapp/handleservlet"。
javascript也是在客户端解析的,所以其相对路径和形式表单一样。
因此,一般情况下,在JSP/html页面等引用的CSS、javascript、行动等属性前面最好都加个上应用应用名称,以确保所引用的文件都属于网络应用中的目录。
另外,应该尽量避免使用类似“!”,“。/?“. ./. ./钡壤嗨频南喽愿梦募恢玫南喽月肪?这样当文件移动时,很容易出问题。
<强> 3。JSP/Servlet中获得当前应用的相对路径和绝对路径强>
<强> 3.1 JSP中获得当前应用的相对路径和绝对路径强>
根目录所对应的绝对路径:“request.getRequestURI (); "
文件的绝对路径:“application.getRealPath (request.getRequestURI ());“
当前网络应用的绝对路径:“application.getRealPath (“/?;“
取得请求文件的上层目录:“newFile中(application.getRealPath (request.getRequestURI ())) .getParent (); "
<强> 3.2 Servlet中获得当前应用的相对路径和绝对路径强>
根目录所对应的绝对路径:“request.getServletPath (); "
文件的绝对路径:“request.getSession () .getServletContext () .getRealPath (); "
当前网络应用的绝对路径:“servletConfig.getServletContext () .getRealPath (“/?;“
ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext () javax.servlet.jsp.PageContext.getServletContext () javax.servlet.ServletConfig.getServletContext ()
<强> 4。java的类中获得相对路径,绝对路径的方法强>
<强> 4.1单独的java类中获得绝对路径强>
根据java.io.File的Doc文挡,可知:“默认情况下newFile中(“/?代表的目录为:System.getProperty (“user.dir");“。
以下程序获得执行类的当前路径:
package org.cheng.file;, import java.io.File, 鱼片{public class ,public static  void main (String [] args) throws 异常{, .getContextClassLoader System.out.println才能(Thread.currentThread () () .getResource (“;”)),, System.out.println才能(FileTest.class.getClassLoader () .getResource (“;”)),, System.out.println才能(ClassLoader.getSystemResource (“;”)),, System.out.println才能(FileTest.class.getResource (“;”)),, System.out.println才能(FileTest.class.getResource(“/?);//类文件所在路径, System.out.println才能(newFile中(“/?.getAbsolutePath ()),, System.out.println才能(System.getProperty (“user.dir")),, }大敌; }
<强> 4.2服务器中的Java类获得当前路径(来自网络)