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