java - 在 servlet(网络应用程序)中,我如何知道相对路径?

标签 java servlets

<分区>

我在 .war 文件的根目录下有一个 jsp 文件。 然后我有一个名为 STUFF 的文件夹。

如何访问 STUFF 中的文件 read.txt?

/Name_of_war/STUFF/read.txt 是正确的路径吗?

最佳答案

webapp 的相对路径是/STUFF/read.txt

可以使用ServletContext#getRealPath()将相对 Web 路径转换为绝对本地磁盘文件系统路径。通过这种方式,您可以在通常的 java.io 内容中进一步使用它,这些内容实际上对它运行的 Web 上下文一无所知。例如

String relativeWebPath = "/STUFF/read.txt";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
// Do your thing with File.

然而,如果服务器被配置为在内存中而不是在磁盘上扩展 WAR,那么这将不起作用。使用 getRealPath() 总是有这个警告,不推荐在现实世界的应用程序中使用。如果您最终只需要获取该文件的 InputStream,您可能会为此使用 FileInputStream,那么您最好使用 ServletContext#getResourceAsStream()直接作为 InputStream 获取它:

String relativeWebPath = "/STUFF/read.txt";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// Do your thing with InputStream.

关于java - 在 servlet(网络应用程序)中,我如何知道相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455474/

相关文章:

Java - KeyListener 不起作用,但 ActionListener 起作用

java - java中有类似微软同步框架的东西吗?

java - 服务程序 : get query string but just return empty

java - 使用 ANTLR 4 在 Python 3 中生成 Java 解析器

java - "request"和 "response"变量或值是在 Java EE 中预定义的吗?

javax.servlet.ServletContext 正在从 Spring Boot 应用程序中的多个依赖项加载

java - 我无法从 Google 应用引擎上部署的后端 servlet 连接到我的 google cloud sql 数据库

java - 如何使用比较器和迭代器对整数 vector 进行排序?

java - 意外 token : AS (Using UCanAcces. jar)

java - Facebook 登录不起作用,我忘记了什么?