java

位置:IT落伍者 >> java >> 浏览文章

Java网络编程之URI、URL研究专题四


发布日期:2022年01月19日
 
Java网络编程之URI、URL研究专题四

输入java URIDemo命令后列表的输出结果如下

query://:/public/manuals/appliances?stove#ge:

Authority = :

Fragment = ge

Host =

Path = /public/manuals/appliances

Port =

Query = stove

Scheme = query

//:/public/manuals/appliances?stove

User Info = jeff

URI is absolute: true

URI is opaque: false

上面的输出显示该URI是绝对的因为它指定了一个大纲(query)并且该URI是分层的因为query后面有/符号

技巧

你应该调用URI的compareTo(Object o)和equals(Object o)来决定URI的次序(为了排序目的)和等同性你可以参考SDK文档查阅这些方法的更多信息

URI类支持基本的URI操作包括标准化(normalization)分解(resolution)和相对化(relativization)标准化是通过URI的normalize()方法支持的调用normalize()时它返回对新URI对象的引用该对象包含调用的URI对象的URI的标准的表现

列表演示了normalize()方法它把URI作为程序的唯一的参数URIDemo打印出标准的相等的URI

列表: URIDemojava

// URIDemojava

import *;

class URIDemo

{

ublic static void main (String [] args) throws Exception

{

if (argslength != )

{

Systemerrprintln (usage: java URIDemo uri);

return;

}

URI uri = new URI (args []);

Systemoutprintln (Normalized URI = +

urinormalize ()toString ());

}

}

在编译URIDemo在命令行输入java URIDemo x/y//z//q将看到下面的输出

Normalized URI = x/z/q

上面的输出显示y消失了这是因为意味着你想直接在x下面访问名字空间的z部分意味着你希望访问与z部分相关的名字空间的q部分

URI通过提供resolve(String uri)resolve(URI uri)和relativize(URI uri)方法支持反向解析和相对化操作如果uri引用是空的(null)这三个方法都会产生NullPointerException对象同样如果指定的URI违反了RFC 语法规则resolve(String uri)通过的内部的create(String uri)调用间接地产生一个IllegalArgumentException对象

列表的代码演示了resolve(String uri)和relativize(URI uri)

列表: URIDemojava

// URIDemojava

import *;

class URIDemo

{

ublic static void main (String [] args) throws Exception

{

if (argslength != )

{

Systemerrprintln (usage: +

java URIDemo uriBase uriRelative);

return;

}

URI uriBase = new URI (args []);

Systemoutprintln (Base URI = +uriBasetoString ());

URI uriRelative = new URI (args []);

Systemoutprintln (Relative URI = +uriRelativetoString ());

URI uriResolved = uriBaseresolve (uriRelative);

Systemoutprintln (Resolved URI = +uriResolvedtoString ());

URI uriRelativized = uriBaserelativize (uriResolved);

Systemoutprintln (Relativized URI = +uriRelativizedtoString ());

}

}

在编译URIDemo在命令行输入java URIDemo  x//y 输出如下

Base URI =

Relative URI = x//y

Resolved URI =

Relativized URI = y

上面的输出显示相对的URI的x//y根据基础URI 分解并(在宫相对的URI

技巧

调用URI的toURL()方法把URI转换为URL               

上一篇:基础学习教程:Java Annotation入门

下一篇:Java 程序里的内存洩漏