JAVA基礎(5) -- URL和URI的區別

1、概念:

    URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。

    URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。

2、理解:

    從概念上我們可以看出,URL實際是一個具體的URL,URL它指向一個具體的地址,可以通過URL唯一的拿到想要的地址或文件。

    在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的,schema必須被指定。

3、J2EE中:

    在J2EE中,也會牽扯到這兩個概念,一個是:HttpServletRequest.getRequestURI(),另一個則是:HttpServletRequest.getRequestURL()。

    從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”。而getRequestURL返回的是一個StringBuffer,“The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.”,完整的請求資源路徑,不包括querystring。

    由此看出,在J2EE項目中獲取文件路徑儘量用URI要好於URL,因爲URL是絕對地址,其中主機名變換是很有可能的。

4、總結一下:

    URL是一種具體的URI,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL則必須提供足夠的信息來定位,所以,是絕對的,而通常說的relative URL,則是針對另一個absolute URL,本質上還是絕對的。

發佈了38 篇原創文章 · 獲贊 30 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章