java中 uri的格式_URI与URL详解

URL 与 URI

很多人会混淆这两个名词。

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。

URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

关系:

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。

二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。

792a5c68420b0f079e816d3805f6e762.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

URI 示例

大家把浏览器地址栏里访问网站的地址认为是URL就好了,也就是以HTTP/HTTPS开头的URI子集。

端口 与 URL标准格式

何为端口?端口(Port),相当于一种数据的传输通道。用于接受某些数据,然后传输给相应的服务,而电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方。

端口的作用:因为 IP 地址与网络服务的关系是一对多的关系。所以实际上因特网上是通过 IP 地址加上端口号来区分不同的服务的。

端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

URL 标准格式

通常而言,我们所熟悉的 URL 的常见定义格式为:

scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]

scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。

host //HTTP服务器的IP地址或者域名

port# //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/

path //访问资源的路径

url-params //所带参数

query-string //发送给http服务器的数据

anchor //锚点定位

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

Java中对URI的操作类

@Testpublic void uriTest() throwsException{

URI uri= new URI("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se");

System.out.println("scheme : " +uri.getScheme());

System.out.println("SchemeSpecificPart : " +uri.getSchemeSpecificPart());

System.out.println("Authority : " +uri.getAuthority());

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

}

运行上面的代码,然后得到如下的结果:

a1cc87c91e99988201c087c2ab2d7c4f.gifJava中对URL的操作

@Testpublic void urlTest() throwsException{

URL url= new URL("https://www.qiandu.com:8080/goods/index.html?username=dgh&passwd=123#j2se");

System.out.println("URL: " +url.toString());

System.out.println("protocol: " +url.getProtocol());

System.out.println("authority: " +url.getAuthority());

System.out.println("file name: " +url.getFile());

System.out.println("host: " +url.getHost());

System.out.println("path: " +url.getPath());

System.out.println("port: " +url.getPort());

System.out.println("default port:" +url.getDefaultPort());

System.out.println("query: " +url.getQuery());

System.out.println("ref: " +url.getRef());

}

运行上面的代码,得到以下结果:

aa853f967a087b963f22d96105602850.gif​UserInfo属性

其实关于资源定位的时候还有一种写法,就是类似于sftp://tomcat@www.qiandu.com///app/index.pdf就是在主机名前面有类似于xxx@的东西,其实这种表示就:用户@主机名或者用户@IP。@前面表示登录主机的用户,也就是UserInfo了。

62d83918c4eea9561b0a4a9df7ca8ed1.gifwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值