2011-05-04 177 views
5

有没有办法在java中检索url的绝对路径(http:// localhost:8080/myApp)。该场景是,我需要连接到位于tomcat服务器的csv文件。如果我输入绝对路径,这个语句运行良好,但是有一个解决方案可以使用getAbsolutePath()来检索url的路径,如果我错了,很抱歉。获取java中url的绝对路径

Connection conn = DriverManager(getConnection("jdbc:relique:csv:/home/apache-tomcat-6.0.26/webapps/myApp/")) 

在此先感谢。

回答

9

您可以使用ServletContext.getRealPath(),它正是你想要的。

请注意,它确实而不是必然适用于所有情况。例如,如果您的Tomcat配置为部署.war文件而不解压缩,那么这将返回null

+0

感谢您的答复......你的建议在javax.servlet.ServletContext返回错误消息“getRealPath(java.lang.String中)声明不能应用于()“ – Ria 2011-05-04 09:55:41

+0

您需要将它传递给相对于您的上下文路径的(URL)路径。所以如果你想知道你的webapp的“root”目录,只需传入'“/”'。 – 2011-05-04 10:00:30

+0

ServletContext.getRealPath(“/”);作品....谢谢Joachim .. – Ria 2011-05-04 10:00:49

0

我对JAVA知之甚少。

May be getServletContext().getContextPath() is something you are looking for

编辑:
Or may be getRealPath()

+0

感谢您的回复......这个声明只是返回/ myApp。但是我需要像这样的东西.../home/user/apache-tomcat/webapps/myApp – Ria 2011-05-04 09:54:05

+0

好吧,已经告诉我对JAVA不太了解。怎么样getServletContext()。getRealPath()? – Mayank 2011-05-04 09:56:21

+0

我试过.. ServletContext.getRealPath(“/”)工作.. – Ria 2011-05-04 10:14:20

-1

Tomcat是不是一个HTTP服务器。全部tomcat网址参考服务,而不是文件。

如果您想通过任何http URL获取它,您必须实现另一个服务,该服务根据请求发送csv文件。像http://localhost/myapp/input.csv这样的URL需要像httpd这样的http服务器。

(希望我把你的问题正确的...)

+0

是安德烈亚斯,我用了ServletContext.getRealPath(“/”)。有用... – Ria 2011-05-04 10:13:18