URI 、URL 、URN 理解

文章目录

    • 一、Java URI Api

  • 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)