Ere*_*evi 28 resources servlets relative-path working-directory absolute-path
我编写了一个Java servlet,我想在不同服务器上的许多Tomcat实例上安装它.servlet使用一些静态文件,这些文件在WEB-INF下用war文件打包.这是典型安装中的目录结构:
- tomcat
-- webapps
--- myapp
---- index.html
---- WEB-INF
----- web.xml
----- classes
------ src
------- .....
----- MY_STATIC_FOLDER
------ file1
------ file2
------ file3
Run Code Online (Sandbox Code Playgroud)
我如何知道MY_STATIC_FOLDER的绝对路径,以便我可以读取静态文件?
我不能依赖"当前文件夹"(我在新文件(".")中得到的)因为它取决于Tomcat服务器的启动位置,这在每个安装中都是不同的!
Bal*_*usC 41
您可以使用ServletContext#getRealPath()
将相对Web内容路径转换为绝对磁盘文件系统路径.
String relativeWebPath = "/WEB-INF/static/file1.ext";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
InputStream input = new FileInputStream(file);
// ...
Run Code Online (Sandbox Code Playgroud)
但是,如果您的唯一目的是获取InputStream
它,那么更好地使用,ServletContext#getResourceAsStream()
因为getRealPath()
可以null
在本地磁盘文件系统上没有扩展WAR时返回(默认情况下Tomcat会这样做,但是可以配置为不这样做!):
String relativeWebPath = "/WEB-INF/static/file1.ext";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// ...
Run Code Online (Sandbox Code Playgroud)
毕竟这比java.io.File
方法更强大.
归档时间: |
|
查看次数: |
33637 次 |
最近记录: |