URI、URL以及URN的区别
首先,URI,是uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符,用來(lái)唯一的標(biāo)識(shí)一個(gè)資源。而URL是uniform resource locator,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來(lái)標(biāo)識(shí)一個(gè)資源,而且還指明了如何locate這個(gè)資源。而URN,uniform resource name,統(tǒng)一資源命名,是通過(guò)名字來(lái)標(biāo)識(shí)資源,比如mailto:java-net@java.sun.com。也就是說(shuō),URI是以一種抽象的,高層次概念定義統(tǒng)一資源標(biāo)識(shí),而URL和URN則是具體的資源標(biāo)識(shí)的方式。URL和URN都是一種URI。
在Java的URI中,一個(gè)URI實(shí)例可以代表絕對(duì)的,也可以是相對(duì)的,只要它符合URI的語(yǔ)法規(guī)則。而URL類則不僅符合語(yǔ)義,還包含了定位該資源的信息,因此它不能是相對(duì)的,schema必須被指定。
ok,現(xiàn)在回答文章開(kāi)頭提出的問(wèn)題,到底是imgUrl好呢,還是imgUri好?顯然,如果說(shuō)imgUri是肯定沒(méi)問(wèn)題的,因?yàn)榧词顾鼘?shí)際上是url,那它也是uri的一種。那么用imgUrl有沒(méi)有問(wèn)題呢?此時(shí)則要看它的可能取值,如果是絕對(duì)路徑,能夠定位的,那么用imgUrl是沒(méi)問(wèn)題的,而如果是相對(duì)路徑,那還是不要用ImgUrl的好。總之,用imgUri是肯定沒(méi)問(wèn)題的,而用imgUrl則要視實(shí)際情況而定。
第二個(gè),從HttpServletRequest的javadoc中可以看出,getRequestURI返回一個(gè)String,“the part of this request’s URL from the protocol name up to the query string in the first line of the HTTP request”,比如“POST /some/path.html?a=b HTTP/1.1”,則返回的值為”/some/path.html”。現(xiàn)在可以明白為什么是getRequestURI而不是getRequestURL了,因?yàn)榇颂幏祷氐氖窍鄬?duì)的路徑。而getRequestURL返回一個(gè)StringBuffer,“The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.”,完整的請(qǐng)求資源路徑,不包括querystring。
總結(jié)一下:URL是一種具體的URI,它不僅唯一標(biāo)識(shí)資源,而且還提供了定位該資源的信息。URI是一種語(yǔ)義上的抽象概念,可以是絕對(duì)的,也可以是相對(duì)的,而URL則必須提供足夠的信息來(lái)定位,所以,是絕對(duì)的,而通常說(shuō)的relative URL,則是針對(duì)另一個(gè)absolute URL,本質(zhì)上還是絕對(duì)的。
注:這里的絕對(duì)(absolute)是指包含scheme,而相對(duì)(relative)則不包含scheme。
URI抽象結(jié)構(gòu) ? ? [scheme:]scheme-specific-part[#fragment]
[scheme:][//authority][path][?query][#fragment]
authority為[user-info@]host[:port]
參考資料:
http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URI.html
http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html
轉(zhuǎn)載于:https://www.cnblogs.com/SeeYouLater/p/6019255.html
總結(jié)
以上是生活随笔為你收集整理的URI、URL以及URN的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个男生qq网名带符号。
- 下一篇: 这样换得到吗