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

    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dingwen_blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值