zoukankan      html  css  js  c++  java
  • 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 //锚点定位

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

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

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

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

    ​UserInfo属性

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

  • 相关阅读:
    xftp,winscp显示隐藏文件
    今日校园-打卡
    dungeon quest(又名暗黑遗迹,勇闯地下城等)装备体系简述
    frp转发
    虚拟机win10添加新磁盘
    JEECG(一) 如何配置自己的业务包
    C# 获取Url 请求方式 域名 端口 路径
    js url 参数 转换成 json 对象数据
    VisualStudio2017 远程 调试 IIS 服务器 web网站
    c# MVC Action 如何知道 发送方给你的 Json 数据的格式内容是什么
  • 原文地址:https://www.cnblogs.com/diandianquanquan/p/10606938.html
Copyright © 2011-2022 走看看