URI vs URL vs URN

问题描述 投票:0回答:3

互联网上有很多讨论、帖子、评论和问题来区分 URI、URL 和 URN。 有一个answer对此进行了解释,但我对代码中的实现结果感到困惑。

问:如果 URI 是 URL 的超集,那么它为什么会得到以下输出:

URI : /XXX/abc.do 

URL : http://examplehost:8080/XXX/abc.do

当我编写以下代码时:

System.out.println(“URI : “+ httpRequestObj.getRequestURI());
System.out.println(“URL : “+ httpRequestObj.getRequestURL());

编辑:您能否通过将 JAVA 和 URI、URL 和 URN 的原始概念保留在范围内来分享详细的答案。

问候,

阿伦·库马尔

java url uri urn
3个回答
6
投票

java.net.URI API 给出了很好的解释:

URI 是统一资源标识符,而 URL 是统一资源定位符。因此,抽象地说,每个 URL 都是一个 URI,但并非每个 URI 都是 URL。这是因为 URI 的另一个子类别,统一资源名称 (URN),它命名资源但不指定如何定位它们。上面显示的 mailto、news 和 isbn URI 是 URN 的示例。


1
投票

如果 URI 是 URL 的超集,那么它为什么会得到以下输出......

URI 和 URL 的定义不能用于推断

getRequestURI()
getRequestURL()
的行为。要了解这些方法返回的内容,您需要阅读 javadocs 和 Servlet 规范。

这些方法的含义就是它们本身,因为

HttpRequest
API 随着时间的推移而不断发展,并且这种发展必须保持向后兼容性。

getRequestURI()
确实返回一个URI,而
getRequestURL()
确实返回一个URL,但是URI和URL是不同的东西。


0
投票

想象你有一本书。 URL(统一资源定位符)就像告诉某人保存该书的图书馆的确切地址。它包括具体位置,例如街道名称和建筑物编号。

现在,URI(统一资源标识符)更加通用了。这就像在说:“看看图书馆科学区书架上的内容。”它给出了在哪里可以找到某些东西的一般概念,但不是确切的位置。

最后,URN(统一资源名称)就像书籍本身的名称标签。它没有说明这本书在图书馆的什么地方;它只是给了它一个独特的名字。所以,URI就像告诉它大致在哪里可以找到它,而URN就像给它一个特殊的名字。

所以总而言之,URL 也可能是 URN,并且两者都是 URI

© www.soinside.com 2019 - 2024. All rights reserved.