3

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

问:如果 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 的原始概念来分享详细的答案。

问候,

阿伦·库马尔

4

2 回答 2

5

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

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

于 2013-09-03T10:19:17.797 回答
1

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

URI 和 URL 的定义不能用于推断 和 的getRequestURI()行为getRequestURL()。要了解这些方法返回什么,您需要阅读 javadocs 和 Servlet 规范。

这些方法的含义就是它们的含义,因为HttpRequestAPI 随着时间的推移而演变,而这种演变必须保持向后兼容性。

getRequestURI()确实返回一个 URI,并且getRequestURL()确实返回一个 URL,但是 URI 和 URL 用于不同的事物。

于 2013-09-03T10:35:43.963 回答