二级Java考试辅导教程:8.2基于URL的高层次Java网络编程
文章作者 100test 发表时间 2007:04:06 21:26:36
来源 100Test.Com百考试题网
8.2 基于URL的高层次Java网络编程
8.2.1一致资源定位器URL
URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。
URL是最为直观的一种网络定位方法。使用URL符合人们的语言习惯,容易记忆,所以应用十分广泛。而且在目前使用最为广泛的TCP/IP中对于URL中主机名的解析也是协议的一个标准,即所谓的域名解析服务。使用URL进行网络编程,不需要对协议本身有太多的了解,功能也比较弱,相对而言是比较简单的,所以在这里我们先介绍在Java中如何使用URL进行网络编程来引导读者入门。
8.2.2 URL的组成
protocol://resourceName
协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。例如:
http://www.sun.com/ 协议名://主机名
http://home.netscape.com/home/welcome.html 协议名://机器名+文件名
http://www.gamelan.com:80/Gamelan/network.html#BOTTOM 协议名://机器名+端口号+文件名+内部引用
端口号是和Socket编程相关的一个概念,初学者不必在此深究,在后面会有详细讲解。内部引用是HTML中的标记,有兴趣的读者可以参考有关HTML的书籍。
8.2.3 创建一个URL
为了表示URL, java.net中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:
(1) public URL (String spec).
通过一个表示URL地址的字符串可以构造一个URL对象。
URL urlBase=new URL("http://www. 263.net/")
(2) public URL(URL context, String spec).
通过基URL和相对URL构造一个URL对象。
URL net263=new URL ("http://www.263.net/").
URL index263=new URL(net263, "index.html")
(3) public URL(String protocol, String host, String file).
new URL("http", "www.gamelan.com", "/pages/Gamelan.net. html").
(4) public URL(String protocol, String host, int port, String file).
URL gamelan=new URL("http", "www.gamelan.com", 80, "Pages/Gamelan.network.html").
注意:类URL的构造方法都声明抛弃非运行时例外(MalformedURLException),因此生成URL对象时,我们必须要对这一例外进行处理,通常是用try-catch语句进行捕获。格式如下:
try{
URL myURL= new URL(…)
}catch (MalformedURLException e){
…
//exception handler code here
…
}
8.2.4 解析一个URL
一个URL对象生成后,其属性是不能被改变的,但是我们可以通过类URL所提供的方法来获取这些属性:
public String getProtocol() 获取该URL的协议名。
public String getHost() 获取该URL的主机名。
public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1。
public String getFile() 获取该URL的文件名。
public String getRef() 获取该URL在文件中的相对位置。
public String getQuery() 获取该URL的查询信息。
public String getPath() 获取该URL的路径
public String getAuthority() 获取该URL的权限信息
public String getUserInfo() 获得使用者的信息
public String getRef() 获得该URL的锚
下面的例子中,我们生成一个URL对象,并获取它的各个属性。
import java.net.*.
import java.io.*.
public class ParseURL{
public static void main (String [] args) throws Exception{
URL Aurl=new URL("http://java.sun.com:80/docs/books/").
URL tuto=new URL(Aurl,"tutorial.intro.html#DOWNLOADING").
System.out.println("protocol=" tuto.getProtocol()).
System.out.println("host =" tuto.getHost()).
System.out.println("filename=" tuto.getFile()).
System.out.println("port=" tuto.getPort()).
System.out.println("ref=" tuto.getRef()).
System.out.println("query=" tuto.getQuery()).
System.out.println("path=" tuto.getPath()).
System.out.println("UserInfo=" tuto.getUserInfo()).
System.out.println("Authority=" tuto.getAuthority()).
}
}