第一节 第二节 第三节 第四节 第五节 第六节 第七节
第一节    使用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 ();
}
}
文字设置: 默认黑色 蓝色 绿色 默认大小 较大 较小