熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java網絡編程之URI、URL研究專題四

2013-11-23 18:41:02  來源: Java核心技術 

  輸入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
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25567.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.