JAVA URI 工具类

URI Class

Javase8 API

package java.net;

public final class URI
    implements Comparable<URI>, Serializable

URI语法和组成部分

使用字符串格式描述URI 。
URI通过解析字符串获取指定参数 . 比如 : 获取 host , port 等等。

Components of all URIs: [scheme:]scheme-specific-part[#fragment]

[scheme:]scheme-specific-part[#fragment]

Hierarchical URI components: [scheme:][//authority][path][?query][#fragment]

[scheme:][//authority][path][?query][#fragment]

Server-based authority: [@][:] , 所以也可以理解为以下内容

[scheme:][// [user-info@]host[:port]][path][?query][#fragment]

URI组成部分

ComponentType说明
schemeString传输协议 , 比如 : http , https , redis ,git , ftp 等等
scheme-specific-partString
authorityString
user-infoString
hostStringIP地址
portint端口
pathString
queryString
fragmentString

Java代码示例

为了更清晰的了解URI使用和解析

String uriStr = "https://username:password@127.0.0.1:8080/admin/cms?name=miduo#loveyou1314";

try {
	URI uri = new URI(uriStr);
	System.out.println( "[toString] : " + uri.toString() );
	System.out.println( "[toASCIIString] : " + uri.toASCIIString() );
	System.out.println("#####################################################");
	System.out.println("Scheme : " + uri.getScheme() );
	System.out.println("SchemeSpecificPart : " + uri.getSchemeSpecificPart() );
	System.out.println("Authority : " + uri.getAuthority() );
	System.out.println("UserInfo : " + uri.getUserInfo() );
	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() );
	System.out.println("#####################################################");
	System.out.println("RawSchemeSpecificPart : " + uri.getRawSchemeSpecificPart() );
	System.out.println("RawAuthority : " + uri.getRawAuthority() );
	System.out.println("RawUserInfo : " + uri.getRawUserInfo() );
	System.out.println("RawPath : " + uri.getRawPath() );
	System.out.println("RawQuery : " + uri.getRawQuery() );
	System.out.println("RawFragment : " + uri.getRawFragment() );
}
catch (URISyntaxException e) {
	e.printStackTrace();
}

------------------------- Console -------------------------

[toString] : https://username:password@127.0.0.1:8080/admin/cms?name=miduo#loveyou1314
[toASCIIString] : https://username:password@127.0.0.1:8080/admin/cms?name=miduo#loveyou1314
#####################################################
Scheme : https
SchemeSpecificPart : //username:password@127.0.0.1:8080/admin/cms?name=miduo
Authority : username:password@127.0.0.1:8080
UserInfo : username:password
Host : 127.0.0.1
Port : 8080
Path : /admin/cms
Query : name=miduo
Fragment : loveyou1314
#####################################################
RawSchemeSpecificPart : //username:password@127.0.0.1:8080/admin/cms?name=miduo
RawAuthority : username:password@127.0.0.1:8080
RawUserInfo : username:password
RawPath : /admin/cms
RawQuery : name=miduo
RawFragment : loveyou1314

友情提示

  • URI为JAVA官方提供的Class。所以很多第三方使用到URI。 所以我们必须了解URI的规则和用法才能更好的在第三方的场景使用。比如 : Jedis 使用 URI 方式获取账号、密码、地址、端口。
  • 即使没有 username . 格式也必须保持 username:password 的规则。 username 可以不写,冒号必须存在,否则有些第三方在解析的时候以第二个冒号为准。解析报错。(具体场景看源码)
  • 保持同一个语法规则。方便解析。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

快乐米多

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

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

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

打赏作者

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

抵扣说明:

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

余额充值