网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java网络编程之uri、url研究专题四     
  文章作者:未知  文章来源:水木森林  
  查看:146次  录入:管理员--2007-11-17  
 
  输入java uridemo1命令后,列表1的输出结果如下:
  
  query://jeff@books.com:9000/public/manuals/appliances?stove#ge:
  
  authority = jeff@books.com:9000
  
  fragment = ge
  
  host = books.com
  
  path = /public/manuals/appliances
  
  port = 9000
  
  query = stove
  
  scheme = query
  
  //jeff@books.com:9000/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的标准的表现。
  
  列表2演示了normalize()方法。它把uri作为程序的唯一的参数,uridemo2打印出标准的相等的uri。
  
  列表2: uridemo2.java
  
  // uridemo2.java
  
  import java.net.*;
  
  class uridemo2
  
  {
  
  ublic static void main (string [] args) throws exception
  
  {
  
  if (args.length != 1)
  
  {
  
  system.err.println ("usage: java uridemo2 uri");
  
  return;
  
  }
  
  uri uri = new uri (args [0]);
  
  system.out.println ("normalized uri = " +
  
  uri.normalize ().tostring ());
  
  }
  
  }
  
  在编译uridemo2后,在命令行输入java uridemo2 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 2396语法规则,resolve(string uri)通过的内部的create(string uri)调用间接地产生一个illegalargumentexception对象。
  
  列表3的代码演示了resolve(string uri)和relativize(uri uri)。
  
  列表3: uridemo3.java
  
  // uridemo3.java
  
  import java.net.*;
  
  class uridemo3
  
  {
  
  ublic static void main (string [] args) throws exception
  
  {
  
  if (args.length != 2)
  
  {
  
  system.err.println ("usage: " +
  
  "java uridemo3 uribase urirelative");
  
  return;
  
  }
  
  uri uribase = new uri (args [0]);
  
  system.out.println ("base uri = " +uribase.tostring ());
  
  uri urirelative = new uri (args [1]);
  
  system.out.println ("relative uri = " +urirelative.tostring ());
  
  uri uriresolved = uribase.resolve (urirelative);
  
  system.out.println ("resolved uri = " +uriresolved.tostring ());
  
  uri urirelativized = uribase.relativize (uriresolved);
  
  system.out.println ("relativized uri = " +urirelativized.tostring ());
  
  }
  
  }
  
  在编译uridemo3后,在命令行输入java uridemo3 http://www.somedomain.com/ x/../y. ,输出如下:
  
  base uri = http://www.somedomain.com/
  
  relative uri = x/../y
  
  resolved uri = http://www.somedomain.com/y
  
  relativized uri = y
  
  上面的输出显示相对的uri的x/../y根据基础uri http://www.somedomain.com/分解并(在?m.相对的uri。
  
  技巧
  
  调用uri的tourl()方法把uri转换为url。
 
 
上一篇: java socket网络编程初级入门    下一篇: java网络编程之uri、url研究专题三
  相关文档
robocode 高手的秘诀:圆周瞄准 11-17
javascript实现多维数组多键值排序方法 11-16
j2se综合--java能替代c语言的可能性 12-27
java基础--java中的反射机制详解 11-16
中国年历算法和程式 04-14
课程介绍(1)sl-110 初级java语言编程 11-16
第一个jsr-184 midlet 11-17
教你彻底解决 tomcat 5下文字乱码问题 12-06
最佳实践:勿在 servlet 中实现 singlethreadmodel 11-17
.net 的 msmq 异步调用全过程分析 11-17
开发框架--hibernate中各个包的作用 01-15
java语言安全机制在移动agent中的应用 11-26
体验流调试的威力 11-16
用javabean实现文件上载(5) 11-17
java 程序中的多线程(四) 11-17
实用技巧:.net框架类库中定时器类的使用 (1) 06-06
基于nokia s40的猜数字游戏之一 11-17
在java se中使用hibernate处理数据 11-16
java设计模式之 decorator(装饰) 11-17
作了个小测试equals 和== 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息