访问位于WEB-INF文件夹

时间:2016-06-11 22:04:26

标签: java jsp maven-war-plugin

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

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

我们如何从位于context-root中的JSP文件访问位于WEB-INF / classes目录中的资源? example WAR file with the mentioned structure

1 个答案:

答案 0 :(得分:2)

如果您想通过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之外。否则他们只会在类路径上。