我编写了一个javaservlet,我想将它安装在不同服务器上的许多tomcat示例上。servlet使用一些静态文件,这些文件与web-inf下的war文件打包在一起。这是典型安装中的目录结构:
- tomcat
-- webapps
--- myapp
---- index.html
---- WEB-INF
----- web.xml
----- classes
------ src
------- .....
----- MY_STATIC_FOLDER
------ file1
------ file2
------ file3
如何知道静态文件夹的绝对路径,以便读取静态文件?
我不能依赖“当前文件夹”(我在新文件(“.”)中得到的内容),因为它取决于tomcat服务器的启动位置,这在每个安装中都是不同的!
3条答案
按热度按时间1sbrub3j1#
你可以试试这个
String relativeWebPath = "WEB-INF/static/file1.ext"; InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
yws3nbqq2#
你可以用
ServletContext#getRealPath()
将相对web内容路径转换为绝对磁盘文件系统路径。但是,如果你的唯一目的是
InputStream
最好用它ServletContext#getResourceAsStream()
而是因为getRealPath()
可能会回来null
当war不是扩展到本地磁盘文件系统而是扩展到内存和/或虚拟磁盘时:这比
java.io.File
接近。此外,使用getRealPath()
被认为是坏习惯。另请参见:
getresourceasstream()与fileinputstream
servletcontext.getrealpath(“/”)是什么意思?我应该在什么时候使用它
在基于servlet的应用程序中,在何处放置配置资源文件以及如何读取配置资源文件?
在servlet应用程序中保存上载文件的推荐方法
jk9hmnmh3#
我更愿意使用getresourceaasstream选项基于父目录加载资源。