URI URL URN 理解

Posted dingwen_blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URI URL URN 理解相关的知识,希望对你有一定的参考价值。

文章目录

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

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

一、Java URI Api

    public static void uriDemo() {

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

        /*如果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));

    }

以上是关于URI URL URN 理解的主要内容,如果未能解决你的问题,请参考以下文章

URL,URI和URN的理解

URI URL URN 理解

URI URL URN 的区别

对计算机网络中URI URL URN的理解

什么是URI,URL以及URN,你真的理解了吗。

URL与URI的区别