欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

URI 、URL 、URN 理解

程序员文章站 2024-02-14 12:47:52
...

文章目录

  • URI:统一资源标识符(用来标识抽象或物理资源的一个紧凑字符串)
  • URL:统一资源定位符(用地址定位一个资源)
  • URN:统一资源名称(用名称定位一个资源)

是URL的一定是URI反之亦然。

一、Java URI Api

    public static void uriDemo() {

        //URI通常情况下都是层次(带“/”)的,但是也有不透明(没有“/”)的,层次的URI包含模式,主机,站点等各个部分,当然可能某些部分不包含,但是不透明的URI只包含三个部分,Scheme,Scheme-specific-part,Fragment.
        // 如:mailto:[email protected]

        /*如果URI是非透明只能获取到1~3个信息。
          如果URI是层次结构则能获取所有信息。
          方法中带Raw的,是获取编码后的URI部分信息。非ascii的字符需要进行编码,不带Raw的方法是解码后的信息。
          getScheme、getHost、getPort这三个方法没有Raw方法,是因为这三部分不会出现非ascii的字符
        */
        // 创建URI
        URI uri = URI.create("http://192.168.0.43:8080/test/get?name='test'&age=18");

        // 获取授权机构
        System.out.println(uri.getAuthority());
        System.out.println(uri.getRawAuthority());

        // 获得模式 http
        System.out.println(uri.getScheme());

        // 片段
        System.out.println(uri.getFragment());
        System.out.println(uri.getRawFragment());

        //主机
        System.out.println(uri.getHost());

        // 路径
        System.out.println(uri.getPath());
        System.out.println(uri.getRawPath());

        // 端口
        System.out.println(uri.getPort());

        // 查询字符串
        System.out.println(uri.getQuery());
        System.out.println(uri.getRawQuery());


        // 用户信息
        System.out.println(uri.getUserInfo());
        System.out.println(uri.getRawUserInfo());


        // resolve 把相对URI转为绝对URI
        URI uri1 = URI.create("/user/list.html");
        System.out.println(uri.resolve(uri1));//http://192.168.0.43:8080/user/list.html

        // relativize 将绝对路径的转为相对路径
        System.out.println(uri.relativize(uri1));///user/list.html

        // 比较 相同返回 0 否则返回-1
        System.out.println(uri1.compareTo(uri));

    }
相关标签: Java uri java

上一篇: ODL AAA认证加密

下一篇: aaa