1.主要的區別
url一定是有scheme。
uri不一定有scheme,可以是相對和絕對的。(相對是依賴環境的)
2.uri的結構(3種划分)
1)[scheme:]scheme-specific-part[#fragment]
2)[scheme:][//authority][path][?query][#fragment]
3)[scheme:][//host:port][path][?query][#fragment]
3.一個例子說明三種結構
分析的url:http://www.java2s.com:8080/yourpath/fileName.htm?stove=10&path=32&id=4#harvic
- scheme:匹對上面的兩個Uri標准形式,很容易看出在:前的部分是scheme,所以這個Uri字符串的sheme是:http
- scheme-specific-part:很 容易看出scheme-specific-part是包含在scheme和fragment之間的部分,也就是包括第二部分的[//authority] [path][?query]這幾個小部分,所在這個Uri字符串的scheme-specific-part 是://www.java2s.com:8080/yourpath/fileName.htm?stove=10&path=32& id=4 ,注意要帶上//,因為除了[scheme:]和[#fragment]部分全部都是scheme-specific-part,當然包括最前面的//;
- fragment:這個是更容易看出的,因為在最后用#分隔的部分就是fragment,所以這個Uri的fragment是:harvic
下面就是對scheme-specific-part進行拆分了;
在scheme-specific-part中,最前端的部分就是authority,?后面的部分是query,中間的部分就是path - authority:很容易看出scheme-specific-part最新端的部分是:www.java2s.com:8080
- query:在scheme-specific-part中,?后的部分為:stove=10&path=32&id=4
- path:在**query:**在scheme-specific-part中,除了authority和query其余都是path的部分:/yourpath/fileName.htm
又由於authority又一步可以划分為host:port形式,其中host:port用冒號分隔,冒號前的是host,冒號后的是port,所以: - host:www.java2s.com
- port:8080