【问题标题】:eclipse dynamic web project: accessing static files without using servletContexteclipse动态web项目:不使用servletContext访问静态文件
【发布时间】:2013-08-06 12:17:55
【问题描述】:

我读过这个关于在动态项目中访问静态文件的问题:Where to place a directory of static files in Eclipse Dynamic Web Project

唯一的答案建议使用 ServletContext 中的 getRealPath 方法。

我有一个动态项目,其中常规 Java 类(不是 servlet,不是 JSP)必须访问具有固定路径的静态文件。这个类是从 JSP 调用的,但是无论我把这个文件放在哪里(项目根目录、WebContent 文件夹...)都会引发 FileNotFound 异常。

这个类有没有办法自己访问动态 Web 项目中的静态文件,而不必从 servlet 接收“真实路径”? 这样做的正确方法是什么?

非常感谢。

这是类访问静态文件的行:

System.setProperty("javax.net.ssl.trustStore","trust.jks");
System.setProperty("javax.net.ssl.keyStore","cliente.jks");

我尝试将它们放在根目录下,WebContent、WebContent/WEB-INF 和 WEB-INF/lib。

我猜绝对路径会起作用,但我认为这不是一个好主意。

根异常是:

java.io.FileNotFoundException: cliente.jks (El sistema no puede hallar el archivo especificado)
    java.io.FileInputStream.open(Native Method)
    java.io.FileInputStream.<init>(Unknown Source)
    java.io.FileInputStream.<init>(Unknown Source)
    sun.security.ssl.SSLContextImpl$DefaultSSLContext$2.run(Unknown Source)
    sun.security.ssl.SSLContextImpl$DefaultSSLContext$2.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultKeyManager(Unknown         Source)
    sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(Unknown Source)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

【问题讨论】:

  • 向我们展示一些代码和目录布局如何?
  • 您是否尝试过使用文件的绝对路径?
  • 你能发布你的代码吗?

标签: java jsp servlets static-files


【解决方案1】:

如果静态文件存在于 Web 应用程序相关文件夹中,则使用相对路径可以访问这些静态文件,否​​则使用绝对路径。

【讨论】:

  • 这个相对路径是如何构造的?我尝试将then放在根目录下,WebContent、WebContent/WEB-INF和WEB-INF/lib,并且只使用文件名作为路径。这些动态项目中的工作目录是什么?
  • ./ 给出当前上下文根。然后给出您创建文件的文件夹名称,然后指定文件名。
猜你喜欢
  • 1970-01-01
  • 2012-10-05
  • 2020-10-02
  • 2012-04-22
  • 2011-01-13
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多