Java网络编程之URI、URL考试试题

时间:2017-05-25 编辑:小静 手机版

  Sun认证Java程序员考试旨在考察您通过应用软件分配进行复杂编程的能力。之后还要测试您完成编程所需的知识。以下是关于Java网络编程之URI、URL考试试题,希望大家认真阅读!

  uri、url和urn是识别、定位和命名互联网上的资源的标准途径。本文分析了uri、url和urn和java api的uri和url类(以及与url相关的类),并演示了如何在程序中使用这些类。

  1989年tim berners-lee发明了互联网(world wide web)。www被认为是全球互连的实际的和抽象的资源的集合--它按需求提供信息实体--通过互联网访问。实际的资源的范围从文件到人,抽象的资源包括数据库查询。

  因为要通过多样的方式识别资源(人的名字可能相同,然而计算机文件只能通过唯一的路径名称组合访问),所以需要标准的识别www资源的途径。为了满足这种需要,tim berners-lee引入了标准的识别、定位和命名的途径:uri、url和urn。

  uri、url和urn是什么?

  体系中的uri、url和urn是彼此关联的。uri的范畴位于体系的顶层,url和urn的范畴位于体系的底层。这种排列显示url和urn都是uri的子范畴, uri表示的是统一的资源标识,它是以某种统一的(标准化的)方式标识资源的简单字符串。典型情况下,这种字符串以scheme(命名uri的名字空间的标识符--一组相关的名称)开头,语法如下:

  [scheme:] scheme-specific-part

  uri以scheme和冒号开头。scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与scheme-specific-part分开了,并且scheme-specific-part的语法和语义(意思)由uri的名字空间决定。

  其中一个例子是http://www.cnn.com,其中http是scheme,//http://www.cnn.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。

  我们可以把uri按照绝对的或相对的分类。绝对的uri指以scheme(后面跟着冒号)开头的uri。前面提到的http://www.cnn.com就是绝对的uri的一个例子,其它的例子还有mailto:jeff@javajeff.com、news:comp.lang.java.help和xyz://whatever。你可以把绝对的uri看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。

  如果使用文件系统作类比,绝对的uri类似于从根目录开始的某个文件的路径。与绝对的uri不同的,相对的uri不是以scheme(后面跟着冒号)开始的uri。

  它的一个例子是articles/articles.html。你可以把相对的uri看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。如果用文件系统作类比,相对的uri类似于从当前目录开始的文件路径。

  典型情况下uri构造函数用于建立封装用户指定的uri的uri对象。因为用户可能输入不正确的uri,所以uri构造函数产生已检查的urisyntaxexception对象。这意味着你的代码必须明确地尝试着调用某个uri构造函数并捕捉异常,或者通过在该方法的throws子句中列举urisyntaxexception以'推卸责任'。

  如果你知道uri是有效的(例如在源代码中的uri),将不会产生urisyntaxexception对象。因为在这种情况下处理某个uri构造函数的异常处理要求可能有困难,所以uri提供了静态的create(string uri)方法。

  这个方法分解通过uri引用的string对象中包含uri,如果该uri没有违反任何语法规则就建立uri对象(并从方法中返回对它的引用),否则将捕捉到一个内部的urisyntaxexception对象,把该对象包装金一个未检查的illegalargumentexception对象中,并抛出这个illegalargumentexception对象。

  因为illegalargumentexception是未检查的,你不需要明确的尝试代码并捕捉异常或把它的类名称列举在throws子句中。

  下面的代码片断演示了create(string uri):

  uri uri = uri.create ('http://www.cnn.com');

  uri构造函数和create(string uri)方法试图分解出某个uri的授权机构组件的用户信息、主机和端口部分。对于按正常形式形成的基于服务器的授权机构组件,它们是会成功的。对于按拙劣的形式形成的基于服务器的授权机构组件,他们将会失败--并且把该授权机构组件当作是基于注册的。

  有时你可能知道某个uri的授权机构组件必须是基于服务器的。你可以确保该uri的授权机构组件分解出用户信息、主机和端口,或者你可以确保将产生一个异常(伴随着相应的诊断信息)。你可以通过调用uri的parseserverauthority()方法实现这种操作。

  如果成功分解出uri,该方法将返回包含提取的用户信息、主机和端口部分的uri的新uri对象的一个引用(但是如果授权机构组件已经被分解过了,将会返回调用parseserverauthority()的uri对象的引用。),否则该方法将产生一个urisyntaxexception对象。

  下面的代码片断演示了parseserverauthority():

  // 下面的parseserverauthority()调用出现后会发生什么情况?

  uri uri = new uri ('//foo:bar').parseserverauthority();

Java网络编程之URI、URL考试试题相关推荐
最新推荐
热门推荐