<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                https://blog.csdn.net/readiay/article/details/52862379 看開源框架經常看到會用到URL或者URI之類的,為什么要熟悉這個呢? 比如說你寫一個網絡程序,需要訪問資源,資源位置信息最好封裝起來,如果使用String表示,雖然可以使用,但是感覺挺low的。你用了URI或者URL,當你想獲取這個資源位置信息的某個屬性時怎么著也比String方便吧。 [TOC] ## 1、URI與URL的定義 ? ? ? URI:統一資源標志符(Uniform Resource Identifier) ? ? ? URL:統一資源定位符(uniform resource location) ? ? ? 說白了,URI與URL都是定位資源位置的,就是表示這個資源的位置信息,就像經緯度一樣可以表示你在世界的哪個角落。URI是一種寬泛的含義更廣的定義,而URL則是URI的一個子集,就是說URL是URI的一部分。 ? ? ? 換句話說,每個URL都是URI,但是不是每個URI都是URL的。他們之間最明顯的不同就是在java.net.URI你只能看到他的一些屬性,他只是表示一個位置,但是你沒有辦法通過URI獲取到這個對象的流,但是URL就不同了。java.net.URL該類提供方法(openConnection()),通過該方法我們可以通過IO流操作他。但是URI中我貌似沒看到相關的方法。 ? ? ? 也就是說:URL是可以直接操作的,但是URI并不行。(如果你發現這句話不對,麻煩告訴我下) ## 2、URL的語法 ? ? ? URL與URI很像,兩者的格式幾乎差不多,但是我們接觸的還是URL比較多,就以URL為例說明 ? ? ? URL提供了一種訪問定位因特網上任意資源的手段,但是這些資源可以通過不同的方法(例如HTTP、FTP、SMTP)來訪問,不管怎樣,他都基本上由9個部分構成: ? ? ? <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment> ? ? ? scheme:獲取資源使用的協議,例如http、ftp等,沒有默認值 ? ? ? user:password:用戶名與密碼,這個是一個特殊的存在,一般訪問ftp時會用到,他顯示的表明了訪問資源的用戶名與密碼。但是這個可以不寫,不寫的話可能會讓你輸入用戶名密碼 ? ? ? host:主機,訪問那臺主機,有時候可以是IP,有時候是主機名,例如www.baidu.com ? ? ? port:端口,訪問主機時的端口,如果http訪問默認80,可以省略。 ? ? ? path:通過host:port我們能找到主機,但是主機上文件很多,通過path則可以定位具體文件。例如www.baidu.com/file/index.html。則path是/file/index.html,表示我們訪問/file/index.html這個文件,他很像linux上的路徑。 ? ? ? params:這個很少見,主要作用就是像服務器提供額外的參數,用來表示本次請求的一些特性。例如ftp傳輸模式有兩種,二進制和文本,你肯定不希望使用文本形式傳輸二進制圖片,這樣你的圖片下載下來后可能沒法看了。為了向應用程序提供更豐富的信息,URL中有個專門的部分來表示這種參數。例如ftp://file.qiandu.com/pub/guid.pdf;type=d其中的type=d就是params ? ? ? query:通過get方式請求的參數,例如:www.qiandu.com/index.html?username=dgh&passwd=123 ? ? ? fragment:例如www.qiandu.com/index.html#1。當html頁面比較長時,我們通常會將其分為好幾段,#1就可以 快速定位到某一段。 ## 3、Java中對URI的操作類 ``` @Test public void uriTest() throws Exception{ URI uri = new URI("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se"); System.out.println("scheme : " + uri.getScheme()); System.out.println("SchemeSpecificPart : " + uri.getSchemeSpecificPart()); System.out.println("Authority : " + uri.getAuthority()); System.out.println("host : " + uri.getHost()); System.out.println("port : " + uri.getPort()); System.out.println("path : " + uri.getPath()); System.out.println("query : " + uri.getQuery()); System.out.println("fragment : " + uri.getFragment()); } ``` 運行上面的代碼,然后得到如下的結果: ## 4、Java中對URL的操作 ``` @Test public void urlTest() throws Exception{ URL url = new URL("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se"); System.out.println("URL: " + url.toString()); System.out.println("protocol: " + url.getProtocol()); System.out.println("authority: " + url.getAuthority()); System.out.println("file name: " + url.getFile()); System.out.println("host: " + url.getHost()); System.out.println("path: " + url.getPath()); System.out.println("port: " + url.getPort()); System.out.println("default port:" + url.getDefaultPort()); System.out.println("query: " + url.getQuery()); System.out.println("ref: " + url.getRef()); } 運行上面的代碼,得到以下結果: ``` ![](https://box.kancloud.cn/b979ae6159978ed2d2b716a51eaa98da_469x213.png) ## 5、UserInfo屬性 ? ? ? 其實關于資源定位的時候還有一種寫法,就是類似于 `sftp://tomcat@www.qiandu.com///app/index.pdf` 就是在主機名前面有類似于xxx@的東西,其實這種表示就:用戶@主機名或者用戶@IP。@前面表示登錄主機的用戶,也就是UserInfo了。 ![](https://box.kancloud.cn/c95721dae2c2216ecdf9ff1f5a83460f_563x183.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看