Java代碼 {
dp.sh.Toolbar.CopyToClipboard(this);return false;
}" href="http://dingbuoyi.javaeye.com/blog/836621#">
- String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";
- URI uri = URI.create(urlString);
- System.out.println(uri.getPath());
- System.out.println(uri.getQuery());//解碼
- URL url2 = new URL(urlString);
- System.out.println(url2.getQuery());//不解碼
String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";URI uri = URI.create(urlString);System.out.println(uri.getPath());System.out.println(uri.getQuery());//解碼URL url2 = new URL(urlString);System.out.println(url2.getQuery());//不解碼
URI可以解碼
引用注意,URI 類在某些特定情況下對其組成欄位執行轉義。建議使用 URI 管理 URL 的編碼和解碼,並使用 toURI() 和 URI.toURL() 實現這兩個類之間的轉換。
也可以使用 URLEncoder 和 URLDecoder 類,但是只適用於 HTML 形式的編碼,它與 RFC2396 中定義的編碼機制不同。
引用URI是個純粹的句法結構,用於指定標識Web資源的字串的各個不同部分。URL是URI的一個特例,它包含了定位Web資源的足夠資訊。其他URI,比如:
mailto:cay@horstman.com
則不屬於定位器,因為根據該標識符無法定位任何資源。像這樣的URI我們稱之為URN(統一資源名稱)。
在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。相反的是,URL類可以開啟一個到達資源的流。因此URL類只能作用於那些Java類庫知道該如何處理的模式,例如:http:,https:,ftp:,本地檔案系統(file:),和Jar檔案(jar:)。
URI類的作用之一是解析標識符並將它們分解成各個不同的組成部分。你可以用以下方法讀取它們:
getSchema
getHost
getPort
getPath
getQuery
URI類的另一個作用是處理絕對標識符和相對標識符。如果存在一個如下的絕對URI:
http://docs.mycompany.com/api/java/net/serversocket.html
和一個如下的相對URI:
../../java/net/socket.html#Socket()
那麼你可以將它們合并成一個絕對URI:
http://docs.mycompany.com/api/java/net/socket.html#Socket()
這個過程被稱為相對URL的轉換。
與此相反的過程成為相對化。例如:假設你有一個基本URI:
http://docs.mycompany/api
和另一個URI:
http://docs.mycompany/api/java/lang/String.html
那麼相對化後的URI就是:
java/lang/String.html