java中的url和uri,java中的url和uri

URL和URLConnection类封装了大量的复杂的实现细节,这些细节涉及到怎样从远程站点获取信息。

例如:我们可以通过传递一个字符串来构建一个URL对象

URL url = new URL("urlString");

如果只是想要从该资源获取内容,可以用URL类提供的openStream方法。返回一个InputStream对象。

然后按照一般的方法进行获取,比如:

InputStream inStream = url.openStream();

Scanner in = new Scanner(inStream);

Java.net包对统一资源定位符(uniform resource locator,URL)和统一资源标识符(uniform resource identifier,URI)

作了非常有用的区分。

URI是个纯粹的句法结构,用于指定标识web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了用于定位

web资源的足够信息。其它URI,如:  mailto:****@163.com 则不属于定位符,因为根据该标识符我们无法定位任何数据。

像这样的URI我们称为URN(uniform resource name ,统一资源名称)。

java的类库中,URI类不包含任何用于访问资源的方法,它的唯一作用就是解析。相反的是URL类可以打开一个到达资源的

流。因此,URL类只能作用于java类库知道该如何处理的模式,如:http:。https:.tfp:本地文件系统(file:)和jar文件(jar:)。为了

解对URI进行解析并不是可有可无的,要考虑它也许会变得非常复杂。如:

URI规范出了标记这些标识符的规则。一个URI具有以下句法:

[scheme:]schemeSpecificPart[#fragment]

上面的式子中[...]表示可行部分,它与:和#可以被包含在标识符内。它包含scheme:部分的URI被称为绝对URI。否则,被称为相对URI。

如果绝对的透明URI的schemeSpecificPart不是以/开头的,我们就称它不是透明的。例如:

mailto:***@163.com   所以绝对的透明URI和所有相对URI都是分层的(hierarchical)。例如:

../../java/net/socket.html#Socket()

一个分层的URI的schemeSpecificPart具有以下的结构:[//authority][path][?query] 在这里,[....]同样表示可选。

对于那些基于服务器的URI,authority部分采用以下的形式:[user-info@]host[:port]  port表示服务器中的端口必须是一个整数。

URI的作用之一是:解析标识符并将它分解成各种不同的组成部分。可用以下的方法读取各个部分:

getScheme    getSchemeSpecificPart      getAuthority    getUserInfo      getHost

getPort           getPath                              getQuery         getFragment

URI的另一个作用是:处理绝对标识符和相对标识符。如果存在一个如下的绝对URI:

和一个如下的相对URI:

../../java/net/Socket.html#Socket()

那么可以把它们合并成一个绝对的URI:

这个过程被 称为相对URL的转换。(resolving)

与此相反的过程被称为“相对化”。例如,有一个基本的URI:

java/lang/Stirng.htlml

URI类同时支持以下两个操作:

relative = base.relativize(combined);

combined = base.resolve(relative);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值