绝对的相对路径(Eclipse,JSP)

时间:2010-08-29 20:40:36

标签: eclipse jsp tomcat relative-path absolute-path

我在Eclipse(JSP)中创建一个Web应用程序,并使用Tomcat作为服务器(集成到Eclipse中)。我必须在下面创建对象并指定配置文件的路径。这条绝对的道路很有效:

Store store = StoreFactory.create("file:///C:/Users/Aliens/workspace/myProject/WebContent/config/sdb.ttl");

但是我想知道为什么我不能使用相对路径。是"config/sdb.ttl"是否正确(如果项目的名称是根)?但它找不到这种方式(NotFoundException)。

2 个答案:

答案 0 :(得分:5)

相对磁盘文件系统路径是相对于当前工作目录的,这取决于您启动应用程序的方式(在Eclipse中它将是项目文件夹,在命令控制台中它将是当前打开的文件夹,在Tomcat管理器/服务中它将是Tomacat/bin文件夹等)。你无法从Java代码中控制它,所以不要管它。

在JSP / Servlet中,您可以使用ServletContext#getRealPath()将相对Web内容路径(它的根目录在公共webcontent中,在您的情况下为/WebContent文件夹)转换为绝对磁盘文件系统路径。所以:

String relativeWebPath = "/config/sdb.ttl";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Store store = StoreFactory.create(absoluteDiskPath);
// ...

继承的getServletContext()方法在servlet中可以使用ServletContext

答案 1 :(得分:0)

正确/标准/兼容的方式是使用http://adderpit.com/jdk/j2eedocs/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String)

喜欢

servletContext.getResourceAsStream("config/sdb.ttl");