当前位置: 首页 > 知识库问答 >
问题:

JSP/JavaScript Web应用程序中的绝对VS相对URL

傅正阳
2023-03-14

您如何在Java web应用程序中处理Javascript文件中的URL,例如在执行AJAX请求时?

对于AJAX调用,您总是使用绝对URL吗?(包括web应用程序上下文)-如果应用程序上下文发生变化怎么办?

还是使用相对URL?这很困难,因为JSP文件可以通过应用程序中的多个不同URL映射加载。

更清楚地说:

假设我有一个java应用程序myapp.war在http://www.example.com/myapp/下运行

在Javascript文件中,我想对 /getData.json进行AJAX调用-我可以通过绝对URL执行此操作:

$.ajax({
  url: "/myapp/getData.json",
  cache: false
}).done(function(data) {
  ... 
});

这只适用于我不重命名应用程序

或通过相对URL

$.ajax({
  url: "getData.json",
  cache: false
}).done(function(data) {
  ... 
});

但是,只有当当前页面位于正确的路径中时,相对URL才起作用。

共有1个答案

姬飞昂
2023-03-14

首选绝对值;考虑一下更改应用程序名称的频率与处理文件结构的次数(提示:几乎从不更改,因此也不太罕见)。

否定也建议使用绝对路径;如果你使用相对路径,那么改变文件位置是最简单的问题——想想当你开始重构代码时会发生什么(这是很常见的):方法(可能包含脆弱的URL引用)一直被提取到实用程序类,而此类类可能会存在于其他文件中。

底线是,相对路径将有效地使代码僵化,而绝对路径将允许更大的灵活性。

 类似资料:
  • 问题内容: 如标题中所述,我需要确定路径是相对路径还是绝对路径,何时运行程序: 这是我的测试用例。我到底该如何在Shell程序中执行此操作? 或更笼统地说,在这种情况下,如何检查路径是相对的还是绝对的? 问题答案:

  • 我正在基于JSP的webapp中进行一些基本的模板制作。例如,我希望有一个标准的页眉和页脚(基本HTML),我把它拉到我的每个JSP中。 我的内容JSP位于www.com.cn/WEB-INF/JSP/home。jsp,我在WEB-INF/jsp/template/上有模板jsp,例如WEB-INF/jsp/template/Body Footer。jsp。 现在,在家里。jsp,我想拉入我的模板

  • 如在上一节讨论 @Template 和 Viewable 可提供的方式来定义一个参考模板。现在我们将讨论如何将这些值解释和如何发现具体的模板。 20.3.1. 相对模块引用 相对引用是指任何路径不以 ‘/‘字符开头 (如 index.foo)。这种类型的引用,将会通过前面加上最后匹配的完全名字的值来转为绝对路径。 考虑Example 20.3, “Using @Template on a reso

  • 问题内容: 我无法从相对URL构建绝对URL而没有求助于String hackery … 给定 里面的方法: 什么是最“正确”的构建方式: (注意,必须是绝对的,而不是相对的) 当前,我正在通过构建字符串来实现,但是必须有更好的方法。 我研究了新URI / URL的各种组合,最后得到了 非常感谢帮助 问题答案: 使用java.net.URL

  • 问题内容: 我正在编写一个servlet(特别是Scalatra)。在servlet中,我在目录中包含许多链接,该目录包含在每个页面中。我希望这些链接相对于应用程序基础。如果我使用诸如“ / foo”之类的链接,那么当从根目录(localhost:8080 /)提供servlet时一切正常,但是如果我从Jetty / Tomcat以及其他servlet(localhost:8080 / servl

  • 问题内容: 我有一个生产和开发服务器。问题是目录结构。 发展: 生产: 我如何在两个服务器上使用一个in 文件夹来使用该属性的相同路径?我可以在相对路径中使用技巧吗? 问题答案: 该URL 相对于CSS文件的位置,因此这应该对您有用: 相对URL返回两个文件夹,然后返回该文件夹-只要结构相同,它就适用于两种情况。 从https://www.w3.org/TR/CSS1/#url 部分URL是相对于