gpt4 book ai didi

java - ServletContext.getResource 从 lib 中获取资源

转载 作者:行者123 更新时间:2023-11-28 22:29:31 24 4
gpt4 key购买 nike

我有一个 jar 文件 test.jar,它位于 WEB-INF/lib 中,并在其根目录中包含一个文件:

/
|- test.jsp

现在我想从我的代码中的某处访问这个文件:

this.getServletContext().getResource("/test.jsp");

但结果始终为空,尽管 getResource 的文档指出还搜索了 WEB-INF/lib 中的 jar 文件:

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResource%28java.lang.String%29

我是否遗漏了什么或者为什么我无法获取资源?

最佳答案

您已经提供了指向 javadoc 的链接,并引用了相关部分:

The path must begin with a / and is interpreted as relative to the current context root, or relative to the /META-INF/resources directory of a JAR file inside the web application's /WEB-INF/lib directory.

因此它被解释为相对于 jar 文件中的 /META-INF/resources 文件夹。

但是,您使用标签表示您正在使用 Tomcat。 ServletContext.getResource() 的 Tomcat 执行有点不同。它甚至没有提到在 jar 文件中搜索资源。

建议:如果您想使用 ServletContext.getResource() 访问它们,请不要将您的资源放在 jar 文件中。如果您确实需要将它们放入 jar 文件中,请改为使用 Class.getResource() 方法,例如将一个可选的空类放入 jar 文件中,并使用它来访问/加载资源,例如:

jar 内容:

/
|- SomeClass.class
|- test.jsp

访问test.jsp的Java代码:

SomeClass.class.getResource("/test.jsp"); // or it can even be "test.jsp"

关于java - ServletContext.getResource 从 lib 中获取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251193/

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