1. 程式人生 > >URL和URI的理解(getResource().getPath()獲取的路徑自動編碼)

URL和URI的理解(getResource().getPath()獲取的路徑自動編碼)

個人理解,僅供參考,多多指教(URL   URI 表示對應的物件)。

   問題

    

    在獲取專案的根目錄時,一開始直接用getResource()的方法得到URL的物件,然後去getPath()。在我自己的電腦上測試沒什麼問題。但是提交到伺服器上測試時,通過getPath()獲取到的路徑卻亂碼了。百思不得其解。

    後來用getResource()的帶的URL物件.toURI()獲取到URI物件,再getPath(),得到的路徑就是完整的路徑了。

   原因

    URL.getPath() 會經過application/x-www- form-urlencoded編碼,所以如果你伺服器上的路徑中有特殊的字元&%或者空格,那麼會自動幫你編碼。而URI.getPath()不會幫你編碼,直接返回對應的路徑。

延伸:

為什麼URL.getPath() 會自動進行編碼,而URI不會?這就要談到URL和URI的區別了。

    (擷取百度百科)  

     URL:統一資源定位符 ,是對可以從網際網路上得到的資源的位置和訪問方法的一種唯一標識,是網際網路上標準資源的地址。

        URI:統一資源識別符號,是一個用於標識某個唯一網際網路資源名稱的字串。

         還有他們一個家人 URN:統一資源名稱,標識一個某個唯一網際網路資源實體的識別符號,但是不能定位到資源的位置。

    從上面可以看出,URI 分為URL和URN兩種,URL和URN 都是表示唯一的一個資源,但他們之間最明顯的區別就是,是否能定位到表示的資源實體。就像地球上的人本質上分為男人和女人(故意找茬的我打死你。。。)。    

    mailto:[email protected]

    上面的是一個URI,但是他不能定位資源的位置,所以他是一個URN。

    URL 中L 表示Locator 定位器的意思,他能定位到資源的具體位置。例如:

 https://baike.baidu.com/item file/url/110640.html

    紅色部分表示 指定的傳輸協議,藍色部分指存放資源的伺服器的域名系統 (DNS) 主機名或 IP 地址,黑色部分就是路徑(path)表示110640.html檔案在伺服器上的具體位置,開始URL.getPath()獲取到的就是黑色部分。回到問題,為什麼URL.getPath()會自動編碼。因為URL是一定需要能定位到資源的字元,如果你的路徑中包含了特殊字元或者空格,那麼肯定是訪問(定位)不到代表的資源的。所以JDK會使用application/x-www- form-urlencoded

對路徑進行編碼,已確保你的路徑能正常的訪問。而URI不會自動編碼是因為他包括了URL和URI,所以URI並不代表一定需要定位到資源,所以不會自動編碼。

相關推薦

URLURI理解getResource().getPath()獲取路徑自動編碼

個人理解,僅供參考,多多指教(URL   URI 表示對應的物件)。   問題:        在獲取專案的根目錄時,一開始直接用getResource()的方法得到URL的物件,然後去getPath()。在我自己的電腦上測試沒什麼問題。但是提交到伺服器上測試時,通過getP

URLURIURI

URI類 URI是對URL的抽象,不僅包括統一資源定位符(Uniform Resource Locator,URL)還包括統一資源名(Uniform Resource Names,URN)。實際使用的URI大多是URL,正常情況下,假如你想下載一個URL的內容,

通俗理解URLURI

這麼說吧,對於這兩個詞的理解,我就舉一個例子就行了。 如果說世界上每一個人的名字是不可以重複的,那麼一個名字就可以唯一標識一個人(當然身份證號也是這樣的意思哈),但是你是找不到這個人的,只能是唯一標識。那麼這就相當於是URI。 而省份證上的地址加上姓名,就可以唯一標識你這個

自己理解URLURI的區別

為了讓自己搞清楚這個問題,所以覺得梳理下思路,寫下總結,給自己和大家一個參考。 URL  URL是Uniform Resource Locator(統一資源定位器)的縮寫,它表示Intent上某一個資源的地址。通過URL能夠訪問Intent上的各種資源,如常用的WWW、FT

URLURI的詳細區分帶例項

1說明:這段時間寫android的時候用到了URL和URI,有點分不清楚,於是做了一個系統性的學習。在這裡將自己的學習筆記粘貼出來,希望對大家有幫助。1)Java類庫裡有兩個對應的類java.net.URL和java.net.URI,官方的定義分別如下:(URL)A Unif

URLURI簡單介紹

php 必須 locate 簡單介紹 相對路徑 通過 指向 source tar URL與URI 我們經常接觸到的就是URL了,它就是我們訪問web的一個字符串地址,那麽URI是什麽呢?他們是什麽關系呢? URL:uniform resource location 統

【JAVA】關於java中 類.class.getResource("/").getPath()獲取路徑有空格的問題

() 獲取路徑 return url fig net java.net nbsp 相關信息 寫了一個web工程,在本地測試正確,但是部署到服務器上就出現錯誤。原因是讀取不到配置文件。 後來從打印出來的文件路徑中發現是用Java的class.getResource("/").

URLURI的區別聯系

.com 如何 log com 指定 orm 統一資源定位器 pos 通過 首先,URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。而URL是uniform resource locator,統一資源定位器,它是一種具

URLURI的關系

分享 TP uri height justify 技術分享 nbsp font http 1.定義 URL : 統一資源定位符 ( 你的家庭地址 ) URI : 統一資源標識符 ( 你的頭銜或者稱號 ) URN : 統一資源名稱 ( 你的名字 ) 2.關系

urluri的區別

resource TP source ima 文件 路徑 html文檔 個人理解 著名 URI、URL和URN URI :Uniform Resource Identifier,統一資源標識符;   Web上可用的每種資源 - HTML文檔、圖像、視頻片段、程序等 -

如何利用C語言來獲取當地時間UTC時間 設當地時間是北京時間

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

獲取URL中的引數使用迴圈獲取,存進集合中,以url中的引數作為key,可根據需要根據key調取自己想要的引數

這是index頁面  中的點選事件方法                       準備跳轉到model_xxxx-list.html的頁面,傳的id function mod

轉!!URLURI區別

  URI,URL,URN “A Uniform Resource Identifier (URI) 是一個緊湊的字串用來標示抽象或物理資源。” “A URI 可以進一步被分為定位符、名字或兩者都是. 術語“Uniform Resource Locator” (

Java網路程式設計之URLURI

URL和URI URL可以唯一地標識一個資源在Internet上的位置。URL是最常見的URI URI URI的結構: 模式:模式特定部分 常見的模式有: data file ftp http mailto magnet teln

計算機網路學習1:HTTP協議中URLURI的區別

國際慣例膜dalao,dalao部落格讓我學習到了新姿勢 首先,先來了解一下這些單詞的全稱: HTTP = Hyper Text Transfer Protocol(超文字傳輸協議) URI

如何利用C語言來獲取當地時間UTC時間 設當地時間是北京時間

                #include  <stdio.h>  #include  <time.h>  int main(){ time_t t = time(NULL);  tm *tp = localtime(&t);   // 北京時間 printf("%d/%

認識URLURI

img form web Locator 通過 https height 主機名 交互 一、URL(Uniform Resource Locator) 1、什麽是URL url是統一資源定位符,對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,

URLURI

怎麽 protocol font 法規 區別 交互操作 位置 file 表示 (一)URL和URI是什麽   1.URL(Universal Resource Locator) 是統一資源定位符,對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資

URLURI簡單辨析

文件系統 沒有 tro rsa scheme strong 位置 source 標準化 URI 全稱為 Universal Resource Identifier,統一資源標識符,用來唯一的標識一個資源。 URL 全稱為Universal Resource Lo

Spring框架[一]——spring概念ioc入門ioc操作xml配置文件

修改 數組 名稱空間 springmvc jdbc ack 靜態 spring框架 鍵值 Spring概念 spring是開源的輕量級框架(即不需要依賴其他東西,可用直接使用) spring核心主要兩部分 aop:面向切面編程,擴展功能不是修改源代碼來