gpt4 book ai didi

java - 我们的 war/WEB-INF 文件夹中资源的文件路径?

转载 作者:行者123 更新时间:2023-11-28 23:29:25 25 4
gpt4 key购买 nike

我的应用引擎项目的 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");

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

这将为您提供您正在寻找的资源的完整系统路径。但是,如果 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");

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String)

无论您使用何种 Servlet 容器以及应用程序安装在何处,后一种方法都适用。前一种方法只有在部署前解压缩 WAR 文件时才有效。

编辑:getContext() 方法显然是您必须实现的。 JSP 页面将其作为 context 字段提供。在 servlet 中,您可以从传递给 servlet 的 init() 方法的 ServletConfig 中获取它。如果您当时存储它,之后您可以随时获取您的 ServletContext。

关于java - 我们的 war/WEB-INF 文件夹中资源的文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32538210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com