gpt4 book ai didi

如果我在 Jersey 的 @Path 注释中使用子资源,则找不到 JavaScript 文件

转载 作者:行者123 更新时间:2023-12-01 14:06:13 26 4
gpt4 key购买 nike

我有一个 Jersey REST Web 服务,这是我的 URL 路径的资源类 http://localhost:8080/myapp/account/home .

@Path("account/home")
public class AccountResources {

@GET
@Produces(MediaType.TEXT_HTML)
public Viewable displayForm() {
return new Viewable("/homepage.html");
}
}

HTML 文件 homepage.html与 JavaScript 文件链接,该文件应从 js/jump.js 加载在服务器上:

<script src="js/jump.js"></script>

但是,当我启动我的网络应用程序并打开 http://localhost:8080/myapp/account/home 时(基本上这是 homepage.html ),JavaScript 文件 js/jump.js未加载。所以我必须添加上下文根路径 /myapp/使其发挥作用:

<script src="/myapp/js/jump.js"></script>

这不太漂亮,因为上下文根路径 /myapp可以稍后更改。所以我不想添加/myapp我的 HTML 文件中随处可见。另外,我的web应用程序中的物理目录布局如下:

WebContent
|
|_____ homepage.html
|
|_____ js
|
|____ jump.js

那么为什么如果我使用 <script src="js/jump.js"></script> 就不起作用呢?在homepage.html即使 body 上js/jump.jshomepage.html是否位于服务器上的同一 Web 根目录中?如果我使用@Path,Jersey servlet 是否会更改 HTML 和 JavaScript 文件的相对 URL 路径是这样注释的吗?我尝试了另一种使用 @Path 的方法没有子资源:

@Path("account")

这次我可以使用<script src="js/jump.js"></script>在我的homepage.html打开http://localhost:8080/myapp/account就可以成功加载JS文件。所以看来Jersey的@Path("account/home")中定义的URL路径中的子资源注释将使 JavaScript 相对文件路径不可搜索。

有什么能让双方都开心的好办法吗? (即,我可以在 URL 路径中使用两个子资源,如 @Path("account/home") ,而无需将 js/jump.js 更改为 /myapp/js/jump.js )

最佳答案

尝试写作

<script src="../js/jump.js"></script>

在第一个示例中,服务器评估 http://localhost:8080/myapp/account/js/jump.js

的相对路径

但是你需要的是:

http://localhost:8080/myapp/js/jump.js

因此,只需让浏览器知道查找一条路径即可。祝你好运!

关于如果我在 Jersey 的 @Path 注释中使用子资源,则找不到 JavaScript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18881617/

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