創新易聯歡迎您!13年專注深圳網站建設

什么是URI?什么是URL?兩者之間又有什么區別

日期:2017-03-19 | 來源:易聯網站建設公司 | 閱讀:
什么是URI?什么是URL?兩者之間又有什么區別?關于這個問題,今天深圳網站建設公司創新易聯的小編就和大家仔細說一說

URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。而URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明了如何locate這個資源。而URN,uniform resource name,統一資源命名,是通過名字來標識資源,比如mailto:[email protected]。也就是說,URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。

在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的,schema必須被指定。
ok,現在回答文章開頭提出的問題,到底是imgUrl好呢,還是imgUri好?顯然,如果說imgUri是肯定沒問題的,因為即使它實際上是url,那它也是uri的一種。那么用imgUrl有沒有問題呢?此時則要看它的可能取值,如果是絕對路徑,能夠定位的,那么用imgUrl是沒問題的,而如果是相對路徑,那還是不要用ImgUrl的好。總之,用imgUri是肯定沒問題的,而用imgUrl則要視實際情況而定。
第二個,從HttpServletRequest的javadoc中可以看出,getRequestURI返回一個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”。現在可以明白為什么是getRequestURI而不是getRequestURL了,因為此處返回的是相對的路徑。而getRequestURL返回一個StringBuffer,“The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.”,完整的請求資源路徑,不包括querystring。
總結一下:URL是一種具體的URI,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL則必須提供足夠的信息來定位,所以,是絕對的,而通常說的relative URL,則是針對另一個absolute URL,本質上還是絕對的。
—— 微信公眾號 ——

熱門標簽

急速赛车单机版