我的应用引擎项目的 war/WEB-INF 文件夹中有一个文件。我在常见问题解答中读到,您可以在 servlet 上下文中从那里读取文件。我不知道如何形成资源的路径:
/war/WEB-INF/test/foo.txt
我将如何构造到该资源的路径以与 File() 一起使用,就像上面看起来的那样?
谢谢
最佳答案
有几种方法可以做到这一点。只要扩展 WAR 文件(一组文件而不是一个 .war 文件),就可以使用这个 API:
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");
这将为您提供您正在寻找的资源的完整系统路径。但是,如果 Servlet 容器从不扩展 WAR 文件(如 Tomcat),这将不起作用。可行的是使用 ServletContext 的 getResource
方法。
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");
或者,如果您只想要输入流:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");
无论您使用什么 Servlet Container 以及应用程序安装在何处,后一种方法都可以使用。只有在部署前解压缩 WAR 文件时,前一种方法才有效。
编辑:
getContext() 方法显然是您必须实现的。 JSP 页面使其可用作 context
字段。在 servlet 中,您可以从传递给 servlet 的 init()
方法的 ServletConfig
获取它。如果你在那个时候存储它,那么之后你可以随时获取你的 ServletContext。
关于java - 我们的 war/WEB-INF 文件夹中资源的文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340653/