java路径问题小结

[b]1.user.dir[/b]

//通过来获取;此目录并非是固定的,而是根据该代码所属类运行时的环境而定。
//普通的java程序中获得的是该类所属项目的根目录(d:\workspace\app)
//在特定服务器下发布运行的javaweb程序则获得的是该服务器下提供运行环境的目录
//(如用Tomcat将获得F:\Tomcat 6.0\bin)
System.getProperties("user.dir")


[b]2.classes目录[/b]
顾名思义指存放类文件的根目录。
[list]
[*]普通java程序的classes目录指app\bin
[*]web项目的classes目录是指app\WebRoot\WEB-INF\classes
[/list]


//在普通项目或web项目中
//s:获得classes目录绝对路径(包括TestClass类所属包目录)
// app\bin\com\test
// 或app\WebRoot\WEB-INF\classes\com\test
//ss:获得classes目录绝对路径
// app\bin
// 或app\WebRoot\WEB-INF\classes
com.test.TestClass c=new com.test.TestClass();
String s=c.getClass().getResource("").getPath();
String ss=c.getClass().getClassLoader().getResource("").getPath();


[b]3.web项目根目录(在服务器发布后) app\[/b]
(1)根据ServeletContext的getRealPath()方法获得绝对路径

//第一种获得"app"绝对路径f:\tomcat 6.0\webapps\app
//第二、三种获得"app\"绝对路径f:\tomcat 6.0\webapps\app\
getServletContext.getRealPath("");
getServletContext.getRealPath("\\");
getServletContext.getRealPath("/");

(2)根据HttpServletRequest的getContextPath()方法获得相对路径

getRequest().getContextPath();


[b]4.在struts2框架中获得发布后web项目的根目录[/b]

//利用ServletActionContext的静态方法
String real=ServletActionContext.getServletContext().getRealPath("");
String relative=ServletActionContext.getRequest().getContextPath());

如果使用user.dir的值的话获得的路径为%Tomcat_Home%\bin,所以不推荐使用user.dir这一环境变量来获取路径。

[color=red]对于新手来说,搞清楚java项目的开发目录和发布目录的信息是十分必要的,特别是使用集成开发环境下,目录的安排十分透明,如果脱离开发环境的话,很多新手都会对项目目录结构很迷茫。[/color]

[url="http://383984216-qq-com.iteye.com/admin/blogs/1149024"][b][color=violet]转载请注明出处:http://383984216-qq-com.iteye.com/admin/blogs/1149024[/color][/b][/url]

你可能感兴趣的:(java基础)