URL和URI
分解URL
URL由以下5部分组成:
1、模式(协议)
2、授权机构
3、路径
4、片段标识符(段/ref)
5、查询字符串
http://www.mrchengs.com/java/shop/index.html?age=12
协议:http
授权机构:www.mechengs.com
路径:/java/shop/index.html
查询字符串:age=12
授权机构:用户信息、主机、端口
http://admin@www.mrchengs.com:8080/
9个公共方法提供了URL这些部分的只读访问:
1、getFile() 2、getHost() 3、getPort()
4、getProtocol() 5、getRef() 6、getQuery()
7、getPath() 8、getUserInfo() 9、getAuthority()
相等性比较
URL类通常的equals()和haashCode()方法
与之前使用方式一致
比较
URL有3个方法可以将一个实例转换为另一种形式
1、toString():绝对的URL
2、toExternalForm():将一个URL对象转换为一个字符串,返回一个可读的String
3、toURI():将URL对象转为对应的URI对象
URI类
URI是对URL的抽象
不仅包括统一的资源定位符
还包括统一的资源名
使用URI的次数大于使用URL
大多数的会犯和标准都是URI定义的
与URL类的区别:
构造一个URL
URI类不依赖底层协议处理器
只要语法上正确,Java就不需要为了创建URI对象而理解其协议
第一个构造函数根据满足任何条件的字符串创建一个新的URI对象:
第二个构造函数需要一个模式特定的部分,主要是非层次的URI
模式是URI的协议,必须有ASCII字母、数字及三个标点符号(+ - 。)组成
这个参数传为null,则省略模式
第三个构造函数用于层次URI,如http和ftp URL
主机和路径(使用 / 分割) 共同构成这个URL的模式特定部分
第四个构造函数与前一个基本相同,只是添加了一个查询字符串部分
第五个构造函数是前面两个构造函数调用主层次URI构造函数
这个方法将授权机构分解为用户信息、主机和端口
第六个方法,在确定URI有效的情况下
URI的各部分
URI引用最多三个部分:模式、模式特定部分、片段标识符
模式:模式特定部分“片段
如果省略了模式,这个URL是相对的
如果省略了片段标识符,这个URI就是一个纯URI
getRawFoo()方法返回URI各个部分的编码形式
相应的getFoo()方法首先对所有用白粉还转移的字符进行解码,然后回解码后的部分:
isAbsolute()方法
isOpaque()方法
解析相对URI
提供三个方法而将在相对和绝对之间来回转换
1、resolve()方法将uri参数与这个URI进行比较,并且构造一个新的URI对象
这个对象包装了一个绝对URI
2、resolve(String uri)
调用URI本身不包括绝对的URI
3、relativize()方法很对相对于调用的URI的uri参数创建一个新的URI对象