URI与URL详解

URI与URL详解

URL 与 URI

很多人会混淆这两个名词。

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。

URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

关系:

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。

二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

URI 示例

  大家把浏览器地址栏里访问网站的地址认为是URL就好了,也就是以HTTP/HTTPS开头的URI子集。    

 

端口 与 URL标准格式

何为端口?端口(Port),相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方。

端口的作用:因为 IP 地址与网络服务的关系是一对多的关系。所以实际上因特网上是通过 IP 地址加上端口号来区分不同的服务的。

端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

URL 标准格式

通常而言,我们所熟悉的 URL 的常见定义格式为:

scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]

scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host   //HTTP服务器的IP地址或者域名
port#  //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path   //访问资源的路径
url-params  //所带参数 
query-string    //发送给http服务器的数据
anchor //锚点定位

2、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());
}

运行上面的代码,然后得到如下的结果:


3、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());
}

运行上面的代码,得到以下结果:


4、UserInfo属性
      其实关于资源定位的时候还有一种写法,就是类似于sftp://tomcat@www.qiandu.com///app/index.pdf就是在主机名前面有类似于xxx@的东西,其实这种表示就:用户@主机名或者用户@IP。@前面表示登录主机的用户,也就是UserInfo了。

posted @ 2019-03-27 13:37 A点点圈圈A 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值