首页>java频道>java教程>正文
关于Java路径的分类与使用注意事项

www.zige365.com 2010-6-7 12:10:26 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

对于JavaEE服务器,这可能是服务器的某个路径,这个并没有统一的规范。

而不是我们发布的Web应用程序的根目录。

这样,在Web应用程序中,我们绝对不能使用相对于当前用户目录的相对路径。

在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。这是我们开发Web应用程序时一般所采取的策略。

通用的相对路径解决办法 Java中各种相对路径非常多,不容易使用,非常容易出错。因此,我编写了一个便利方法,帮助更容易的解决相对路径问题。

Web应用程序中使用JavaSE运行的资源寻址问题在JavaSE程序中,我们一般使用classpath来作为存放资源的目的地。但是,在Web应用程序中,我们一般使用classpath外面的WEB-INF及其子目录作为资源文件的存放地。在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

Web应用程序,可以作为Web应用程序进行发布和运行。

但是,我们也常常会以JavaSE的方式来运行Web应用程序的某个类的main方法。

或者,使用JUnit测试。这都需要使用JavaSE的方式来运行。

这样,我们就无法使用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

而JDK提供的ClassLoader类,它的getResource(String name),getResourceAsStream(String name)等方法,使用相对于当前项目的classpath的相对路径来查找资源。读取属性文件常用到的ResourceBundle类的getBundle(String path)也是如此。它们都只能使用相对路径来读取classpath下的资源,无法定位到classpath外面的资源。 Classpath外配置文件读取问题如,我们使用测试驱动开发的方法,开发Spring、Hibernate、iBatis等使用配置文件的Web应用程序,就会遇到问题。尽管Spring自己提供了FileSystem(也就是相对于user,dir目录)来读取Web配置文件的方法,但是终究不是很方便。而且与Web程序中的代码使用方式不一致。至于Hibernate,iBatis就更麻烦了。只有把配置文件移到classpath下,否则根本不可能使用测试驱动开发。

本新闻共2页,当前在第2页  1  2  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
关于Java EE架构原理探秘及企业级应用
浅谈Java企业级应用架构设计中的分布式结构
浅谈正则表达式操作符参考列表
关于Java连接池总结复习及推荐
浅谈web.xml元素:常见设定值一览