访问位于 WEB-INF 文件夹中的资源

Chi*_*wis 2 java jsp maven-war-plugin

我一直在研究一个包含 JSP 文件的简单 Java Web 应用程序。我一直在尝试通过位于结果 WAR 文件的上下文根中的 JSP 文件访问位于 WEB-INF/classes 目录中的资源文件,例如 css 文件和图像。

项目结构是根据Maven War Plugin用法下的推荐结构创建的。我在这个论坛中经历了几个针对类似问题提供的解决方案,但没有一个适用于这个新结构。

例如,我们如何从位于上下文根目录中的 JSP 文件访问位于 WEB-INF/classes 目录中的资源? 具有上述结构的示例 WAR 文件

Ola*_*ock 5

如果你想通过 HTTP 访问这些资源,它们必须在别处——它们不能在 WEB-INF 中。该问题是重复的,因为它已在其他地方多次回答(只需查找此问题的相关问题链接)。Java Web 应用程序永远不会通过 HTTP 访问 WEB-INF 下的任何资源。

但是,由于您的问题是关于“推荐的”标准文件结构,让我告诉您链接的文档在哪里具有误导性:src/main/resources 中的任何资源都将在类路径中结束,例如在 WEB-INF/classes 中。它不会最终出现在 web 应用程序向世界提供它的目录中。但是,文档使用了一个图像,这表明该图像可以在 web 应用程序中使用。它不能。你可以通过类加载器访问它,在你的情况下,例如为:SomeClassFromYourWebapp.class.getResourceAsStream()。这通常是通过.properties文件.xml或在运行时处理的类似文件而不是图像来完成的。我会说真正具有误导性的文档(但它是正确的,只是具有误导性)

从技术上讲,这将回答您关于“如何从 JSP 访问资源?”的问题,因为您可以在 JSP 中使用此代码。我相信您的问题是要求通过 HTTP 解决资源问题。

而答案,就是:将资源,你需要可通过HTTP来src/main/webapp,让他们出来WEB-INF。否则他们只会在类路径上。