1. 概述
java 提供了两个类,在这两个类里封装了大部分 Web 相关的各种操作。这两个类是 URL 类
和 URLConnection 类。
2. URL 类
java.net.URL 类定义了一个统一的资源定位器,它是指向互联网“资源”的指针。可以定
位互联网上的资源。并且在定位的资源存在的情况下,允许以流的方式读取该资源。这些资源
可能是一个简单的文件,也可能是一个目录,甚至可以是一个复杂的对象,比如搜索引擎。
在 JDK 6.0 中 URL 类提供 6 种构造方法,在这里我们介绍常用的两种,第一种是
URL(String spec),它只有一个构造参数,这个构造方法表示用指定的字符串创建一个 URL 对
象,这个字符串呢它是一个 URL 地址,比如 http://localhost:8080/index.html,我们就可以
根据这个 URL 地址字符串的表示形式创建一个 URL 对象。第二种构造方法有四个构造参数,
protocol 表示网络协议,host 表示主机名,port 表示端口号,file 表示资源路径。这个构造
方法会使用指定的网络协议,主机名,端口号和资源路径创建一个 URL 对象。如下表所示:
下面给大家介绍一下 URL 类的常用方法,如下表所示:
介绍完了 URL 类的构造方法和常用方法,下面我们来通过案例 1 来详细看一下这些方法在
程序中是怎么使用的。
案例 1:
public static void main(String[] args) {
try {
URL url = new URL("http://localhost:8080/index.jsp");
System.out.println("此 URL 的主机是: " + url.getHost());
System.out.println("此 URL 的协议是: " + url.getProtocol());
System.out.println("此 URL 的端口是: " + url.getPort());
System.out.println("此 URL 的路径是: " + url.getPath());
} catch (Exception e) {
e.printStackTrace();
}
}
执行结果如下图所示:
3. URLConnection 类
URLConnection 类代表应用程序和 URL 之间的通信连接。此类的实例可以通过调用 URL 对
象的openConnection()方法获得,URLConnection对象可用于读取或写入 URL对象引用的资源。
我们要向创建一个程序和 URL 之间的连接,也就是说我们要创建一个 URLConnection 对象,那
么我们首先要创建一个 URL 对象 ,然后在 URL 对象上调用 openConnection()方法来创建一个
连接对象,也就是说 URL 对象的 openConnection()方法会返回一个 URLConnection 对象。因此
呢,URLConnection 对象就只有一个构造方法,构造参数就是一个 URL 对象,接下来,下面我
们要了解的是 URLConnection 类的常用方法。
URLConnection 类的常用方法如下表所示:
同样的,我们也通过一个案例来理解这些方法:
案例 2:
public static void main(String[] args) throws MalformedURLException,IOException {
URL url = new URL("http://www.jb-aptech.com.cn");
URLConnection con = url.openConnection();
System.out.println("使用的 URL 是:" + con.getURL());
System.out.println("内容类型:" + con.getContentType());
System.out.println("内容长度:" + con.getContentLength());
System.out.println("最后修改:" + con.getLastModified());
System.out.println("超时设置:" + con.getConnectTimeout());
}
下面我们执行这个程序,我们来看一下具体的打印效果。如图所示:
大家可以看到,我们得到的 URL 就是我们创建 URL 对象时的网址。而这个 URL 连接里 URL
引用资源的内容类型是 text/html;charset=GBK,其中 charset 表示数据包中的语言类型,这
里是 GBK 的。而 URL 引用资源的内容长度呢就是 4509,它表示假如我们打开这个网址,那么在
这个网址里就包含 4509 个字符。大家注意,最后修改时间和超时设置都是 0,最后修改时间 0
表示这里没有得到,未知的最后修改时间,而超时设置是 0 呢,则表示超时设置被禁用,也就
是超时无穷大。