gpt4 book ai didi

java - 将资源放在jar文件中并暴露给网络

转载 作者:搜寻专家 更新时间:2023-11-01 02:09:06 24 4
gpt4 key购买 nike

  1. 我有一个网络应用程序,它的资源文件夹中有一堆 js 和 css 文件。我怎样才能将它们暴露在网络上以便能够在我的网页中引用它们?以及如何引用这些文件?

  2. 我还想稍后将这些资源放在一个单独的 jar 文件中,并且(就像在上一个问题中一样)也将它们公开给网络。我怎样才能使用 Maven 做到这一点?我的意思是,将它们打包,以便它们可以位于 META-INF/resources 中。

最佳答案

使用符合 servlet-3.0 的容器(例如 Tomcat 7 及更高版本),并将您的资源放在 jar 文件的 META-INF/resources 中,这些文件将由容器,就好像它们直接位于应用程序的根目录下一样。 jar 本身必须位于 WEB-INF/lib 下。

Maven 与您的问题没有太大关系。如果您希望您的资源由应用程序提供,而不是在 jar 文件中,您可以将它们放在标准 Maven 目录布局中的 src/main/webapp 中。

如果要构建一个包含这些资源的jar文件,那么这个jar文件应该由另一个Maven项目构建,并且是Maven war项目的依赖之一。在 jar 项目中,资源必须位于 src/main/resources/META-INF/resources 下。

编辑:

假设文件名为foo.png,位于webapp根目录下的images文件夹中,或者在META-INF/resources/下在 jar 文件的 images 文件夹中,您可以使用相对路径或绝对路径从应用程序的页面内部引用它。假设您的应用程序的上下文路径是 /myFirstApp。图片的地址将是 /myFirstApp/images/png。现在假设你的页面的 URL 是 /myFirstApp/bar/index.html,你可以使用

<img src="../images/foo.png" />

<img src="/myFirstApp/images/foo.png" />

绝对路径使用起来更容易和更安全,但您不应该硬性规定应用程序的上下文路径。因此,在 JSP 中,您将使用

<img src="${pageContext.request.contextPath}/images/foo.png" />

或者,使用 JSTL:

<img src="<c:url value='/images/foo.png'/>" />

关于java - 将资源放在jar文件中并暴露给网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261183/

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