第一节 | 第二节 | 第三节 | 第四节 | 第五节 | 第六节 | 第七节 | |||||
第一节 使用URL
|
|||||||||||
1. 统一的资源地址URL URL是www统一的资源地址(Uniform Resource Locator)的简写,它规范了www资源网络定位地址的表示方法和通信协议。www资源包括Web页、文本文件、图形文件、声频片段等。URL类定义了www资源的特征及其使用的协议。www统一资源地址基本表示格式如下: protocol://hostname:/resourcename#anchor 其中, protocol:使用的协议,它可以是http,ftp,news,telnet等; hostname:域名服务器,如: [url=http://www.cumt/]www.cumt[/url]; port:端口号,是可选的,表示所连的端口号,如默认,将连接到协议默认的端口。 resourcename:资源名,是主机上能访问到的目录或文件; anchor:标记,也是可选的,它指定文件中的有特定标记的位置。 下面是几个合法的URL例子: (1)[url=http://www.ncsa.uiuc.edu/demoweb/url-primer.htm]http://www.ncsa.uiuc.edu/demoweb/url-primer.htm[/url] (2)[url=http://www.ncsa.uiuc.edu:8080/demoweb/url-primer.htm]http://www.ncsa.uiuc.edu:8080/demoweb/url-primer.htm[/url] (3)[url=ftp://local/demo/information#myinfo]ftp://local/demo/information#myinfo[/url] (4)[url=file://local/demo/readme.txt]file://local/demo/readme.txt[/url] 第(2)个URL把标准www服务器端口80指定为8080端口,第(3)个URL加上符号“#”,用于指定在文件information中标记为myinfo的部分。 2. URL类对象的构造 URL类图如图10-3所示,其构造方法有如下四种。 (1)URL(URL absoluteURL) 利用绝对URL地址,创建一个URL对象。 参数:absoluteURL 绝对URL地址 例如: URL myUni=URL(“[url=http://www.cumt.edu.cn/]http://www.cumt.edu.cn[/url]/”) (2)URL(URL url ,String relativeURL) 利用已建立的URL对象和相对URL地址,创建一个URL对象。 参数:url URL对象 relativeURL 相对URL地址 例如: URL myUni=URL("[url=http://www.cumt.edu.cn/]http://www.cumt.edu.cn[/url]/"); URL mydoc=URL(myUni, "mydoc.html") // mydoc.html是网站 //[url=http://www.cumt.edu.cn/]http://www.cumt.edu.cn[/url]/的一个文件 (3)URL(String protocol,String host,String resourcename ) 利用protocol,host,resourcename创建一个URL对象。参数如下。 protocol:协议。 host:主机。 resourcenamel:资源名。 例如: URL myUni=URL("[url=http://http”,”www.cumt.edu.cn/]http", "www.cumt.edu.cn[/url]","/mydoc.html"); 这种方法与下列方法是等价的: URL myUni=URL("[url=http://http”,”www.cumt.edu.cn/]http://www.cumt.edu.cn[/url]/mydoc.html"); (4)URL(String protocol,String host,int port,String resourcename ) 利用protocol,host,port,resourcename创建一个URL对象。参数如下。 protocol:协议。 host:主机。 port:端口号。 resourcename:资源名。 例如: URL myUni=URL("[url=http://http”,”www.cumt.edu.cn/]http","www.cumt.edu.cn[/url]",80,"/mydoc.html"); 这种方法与下列方法是等价的: URL myUni=URL("[url=http://http”,”www.cumt.edu.cn/]http://www.cumt.edu.cn[/url]:80/mydoc.html"); URL类的构造方中的参数如果无效就会抛出MalformedURLException异常。一般情况下需要捕获并处理这个异常。 3. URL类的属性和主要方法 URL类提供的方法主要包括对URL类对象特征(如协议名、主机名、文件名、端口号和标记)的查询和对URL类对象的读操作。 String getProtocol();返回URL的协议名。 String getHost();返回URL的主机名。 Int getPort();返回URL的端口号, 如果没有设置端口号返回值为–1)。 String getFile();返回URL的文件名及路径。 String getRef();返回URL的标记。 并不是任何一个URL地址都包括这些组成部分。任意给出一个URL的字符串描述,只要创建一个URL对象,就可以调用它的特征获取性方法来得到所需的信息。 4. 用URL获取网上HTML文件 用URL获取网上HTML文件分为三步: (1)构造URL的对象: url=new URL("http://www.cumt.edu.cn"); (2) 将DataInputStream类对象与url的openStrean()流对象绑定: DataInputStream din=new DataInputStream(url.openStream()); (3)利用din 读HTML文件。 图10-4描述了用URL获取网上HTML文件涉及的主要网络资源。 例10-2 用URL获取网络上资源的HTML文件: package cha10; import java.net.*; import java.io.*; public class ReadURL { URL url; DataInputStream din; public ReadURL() { try{ url=new URL("http://www.cumt.edu.cn/"); din=new DataInputStream(url.openStream()); } catch(IOException ioe){ System.out.println("99988"); } } public void readText() { String inputLine; // 从输入流读入数据 try { while((inputLine=din.readLine())!=null) { //将数据信息显示到系统标准输出上 System.out.println(inputLine); } //关闭输入流 din.close(); } catch(MalformedURLException me){ System.out.println("MalformedURLException!"); } catch(IOException ioe){ System.out.println("IOException!"); } } static public void main(String args[]) { ReadURL readurl=new ReadURL(); readurl.readText(); } } 运行下列命令(“开始”→“运行” →cmd,进入命令状态 ): java ReadURL http://www.cumt.edu.cn 运行结果就可以看到中国矿业大学主页的HTML文件。(注意:因程序中已包含有URL地址,因此运行时不需要再输入路径,请您再看一下) 5. 用URL获图像 用URL可以方便地获取图像。如果要用URL来获取图像,必须使用Toolkit对象的方法getImage(URL)。这个方法会立即生成一个Image对象。但这并不意味着图像文件的数据已经读到了内存之中,而是系统与此同时产生一个线程去读取图像文件的数据。因此,就可能存在程序已经执行到了getImage()后面的语句部分,而系统还正在读图像文件数据的情形。 例10-3 用URL来获取图像文件(.jpeg或.gif)。在单机运行例10-3时在D:\目录下建立图象文件test.jpg。 package char10; import java.net.*; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; // GetImageByURL类继承了Frame类,生成一个带标题的窗口 public class GetImageByURL extends JFrame { //类GetImageByURL的构造方法 public GetImageByURL () { // setBackground(Color.white); //设置窗口的标题 setTitle("sample:use URL get Image"); resize(400,300); //显示窗口 show(); } //自动显示窗口图象 public void paint(Graphics g) { try { //构造URL对象,它指向本机上的一个类型为.jpeg的图形文件 URL image_URL= new URL("file:///d:/test.jpg"); Toolkit object_Toolkit=Toolkit.getDefaultToolkit(); Image object_Image=object_Toolkit.getImage(image_URL); g.setColor(Color.white); g.fillRect(0,0,500,400); g.drawImage(object_Image,40,80,500,700,this); } catch(MalformedURLException e){ System.out.println("Exception!");} } //显示图象方法 public static void main(String args[]) { new GetImageByURL (); } } 文字设置: 默认黑色 蓝色 绿色 默认大小 较大 较小 |
|||||||||||