![]() |
1
28
您真的需要从文件中加载它吗?如果将它与类(在WEB-INF/类中)放在一起,则可以使用类加载器获取其输入流:
|
![]() |
2
14
您可以简单地访问系统上预先安排的文件路径。最好这样做,因为添加到webapp目录的文件可能丢失,或者webapp可能无法解压缩,具体取决于系统配置。 在我们的服务器中,我们在应用服务器的JVM中定义了一个系统属性集,该属性集指向应用程序外部数据的“主目录”。当然,这需要修改应用服务器的配置(-dapp_home=..在启动时添加到JVM选项中),我们这样做主要是为了简化在应用服务器上下文之外运行的代码的测试。 您可以很容易地从servlet配置中检索路径:
然后检索此路径并将其用作读取客户机提供的文件的基本路径。
正如我提到的,您将遇到的最可能的问题是安全限制。没有什么能保证webapps可以在其webapp根目录上准备好任何文件。但是,通常有一些简单的方法可以为特定webapps的特定路径授予异常。 不管您需要访问这个文件的代码是什么,因为您在一个Web应用程序中运行,您可以保证这是首先初始化的,并且可以将它的值存储在方便其他代码引用的地方,就像在我的示例中,或者更好地说,只需将路径作为参数传递给需要它的代码即可。 |
![]() |
3
9
如果在Web服务器中有该文件的路径,则可以使用 ServletContext.getRealPath() . 请注意,它并不能保证在每个容器中都能工作(因为不需要容器来解包war文件并将内容存储在文件系统中——大多数情况下都需要这样做)。我想它不能与/WEB-INF中的文件一起工作,因为它们没有虚拟路径。 另一种选择是使用 ServletContext.getResource() 它返回一个URI。这个URI可能是一个“文件:”URL,但不能保证。 |
![]() |
4
3
许多流行的Java Web应用程序,包括 Jenkins 和 Nexus ,使用此机制:
|
![]() |
5
1
你不需要它是一个文件:…网址。你只需要它是一个你的JVM可以的URL 读一读——它会的。 |
![]() |
6
-9
还有另一种方法, 如果您使用像Tomcat这样的容器:
|
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 5 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 5 月前 |
![]() |
rudraraj · java中未声明最终变量 5 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |