国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java網(wǎng)絡編程之URI、URL研究專題三

2019-11-18 10:46:13
字體:
供稿:網(wǎng)友

  典型情況下URI構(gòu)造函數(shù)用于建立封裝用戶指定的URI的URI對象。因為用戶可能輸入不正確的URI,所以URI構(gòu)造函數(shù)產(chǎn)生已檢查的URISyntaxException對象。這意味著你的代碼必須明確地嘗試著調(diào)用某個URI構(gòu)造函數(shù)并捕捉異常,或者通過在該方法的Throws子句中列舉URISyntaxException以"推卸責任"。
  
  假如你知道URI是有效的(例如在源代碼中的URI),將不會產(chǎn)生URISyntaxException對象。因為在這種情況下處理某個URI構(gòu)造函數(shù)的異常處理要求可能有困難,所以URI提供了靜態(tài)的create(String uri)方法。
  
  這個方法分解通過uri引用的String對象中包含URI,假如該URI沒有違反任何語法規(guī)則就建立URI對象(并從方法中返回對它的引用),否則將捕捉到一個內(nèi)部的URISyntaxException對象,把該對象包裝金一個未檢查的IllegalArgumentException對象中,并拋出這個IllegalArgumentException對象。
  
  因為IllegalArgumentException是未檢查的,你不需要明確的嘗試代碼并捕捉異常或把它的類名稱列舉在Throws子句中。
  
  下面的代碼片斷演示了create(String uri):
  
  URI uri = URI.create ("http://www.cnn.com");
  
  URI構(gòu)造函數(shù)和create(String uri)方法試圖分解出某個URI的授權(quán)機構(gòu)組件的用戶信息、主機和端口部分。對于按正常形式形成的基于服務器的授權(quán)機構(gòu)組件,它們是會成功的。對于按拙劣的形式形成的基于服務器的授權(quán)機構(gòu)組件,他們將會失敗--并且把該授權(quán)機構(gòu)組件當作是基于注冊的。
  
  有時你可能知道某個URI的授權(quán)機構(gòu)組件必須是基于服務器的。你可以確保該URI的授權(quán)機構(gòu)組件分解出用戶信息、主機和端口,或者你可以確保將產(chǎn)生一個異常(伴隨著相應的診斷信息)。你可以通過調(diào)用URI的parseServerAuthority()方法實現(xiàn)這種操作。
  
  假如成功分解出URI,該方法將返回包含提取的用戶信息、主機和端口部分的URI的新URI對象的一個引用(但是假如授權(quán)機構(gòu)組件已經(jīng)被分解過了,將會返回調(diào)用parseServerAuthority()的URI對象的引用。),否則該方法將產(chǎn)生一個URISyntaxException對象。
  
  下面的代碼片斷演示了parseServerAuthority():
  
  // 下面的parseServerAuthority()調(diào)用出現(xiàn)后會發(fā)生什么情況?
  
  URI uri = new URI ("http://foo:bar").parseServerAuthority();
  
  一旦擁有了URI對象,你就可以通過調(diào)用getAuthority()、getFragment()、getHost()、getPath()、getPort()、getQuery()、getScheme()、getSchemeSpecificPart()和 getUserInfo()方法提取多種組件。
  
  你也可以通過調(diào)用isAbsolute()確定該URI是絕對的還是相對的,通過調(diào)用isOpaque()確定該URI是不透明的還是分層的。假如返回值是true意味著該URI是絕對的或不透明的,假如返回值是false意味著該URI是相對的或分層的。
  
  列表1中的程序用命令行參數(shù)建立了一個URI對象,調(diào)用URI組件提取方法來檢索URI的組件,并調(diào)用URI的isAbsolute()和isOpaque()方法把該URI分類為絕對的/相對性和不透明的/分層的。
  
  列表1: URIDemo1.java
  
  // URIDemo1.java
  
  import java.net.*;
  
  class URIDemo1
  
  {
  
  ublic static void main (String [] args) throws Exception
  
  {
  
  if (args.length != 1)
  
  {
  
  System.err.PRintln ("usage: java URIDemo1 uri");
  
  return;
  
  }
  
  URI uri = new URI (args [0]);
  
  System.out.println ("Authority = " +uri.getAuthority ());
  
  System.out.println ("Fragment = " +uri.getFragment ());
  
  System.out.println ("Host = " +uri.getHost ());
  
  System.out.println ("Path = " +uri.getPath ());
  
  System.out.println ("Port = " +uri.getPort ());
  
  System.out.println ("Query = " +uri.getQuery ());
  
  System.out.println ("Scheme = " +uri.getScheme ());
  
  System.out.println ("Scheme-specific part = " +
  
  uri.getSchemeSpecificPart ());
  
  System.out.println ("User Info = " +uri.getUserInfo ());

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新源县| 肥乡县| 定陶县| 永修县| 蒲城县| 湘潭县| 濮阳县| 思茅市| 康保县| 洛宁县| 湘乡市| 治多县| 瑞丽市| 牟定县| 温泉县| 皋兰县| 南靖县| 嘉荫县| 六安市| 吴旗县| 抚顺县| 商南县| 乐东| 湘乡市| 江油市| 五原县| 青田县| 台山市| 攀枝花市| 房山区| 二连浩特市| 苍梧县| 广安市| 抚远县| 堆龙德庆县| 泾川县| 博兴县| 隆子县| 怀来县| 从化市| 平塘县|