非常教程

JAVA参考手册

Java URL处理

Java URL处理

Java URL处理

URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。

本章节我们将介绍Java是如处理URL的。URL可以分为如下几个部分。

protocol://host:port/path?query#fragment

protocol(协议)可以是 HTTP、HTTPS、FTP 和 File,port 为端口号,path为文件路径及文件名。

HTTP 协议的 URL 实例如下:

http://www.verydoc.net/index.html?language=cn#j2se

URL 解析:

  • 协议为(protocol):http
  • 主机为(host:port):www.verydoc.net
  • 端口号为(port): 80 ,以上URL实例并未指定端口,因为 HTTP 协议默认的端口号为 80。
  • 文件路径为(path):/index.html
  • 请求参数(query):language=cn
  • 定位位置(fragment):j2se,定位到网页中 id 属性为 j2se 的 HTML 元素位置 。

URL 类方法

在java.net包中定义了URL类,该类用来处理有关URL的内容。对于URL类的创建和使用,下面分别进行介绍。

java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。

序号方法描述
1public URL(String protocol, String host, int port, String file) throws MalformedURLException.
通过给定的参数(协议、主机名、端口号、文件名)创建URL。
2public URL(String protocol, String host, String file) throws MalformedURLException
使用指定的协议、主机名、文件名创建URL,端口使用协议的默认端口。
3public URL(String url) throws MalformedURLException
通过给定的URL字符串创建URL
4public URL(URL context, String url) throws MalformedURLException
使用基地址和相对URL创建

URL类中包含了很多方法用于访问URL的各个部分,具体方法及描述如下:

序号方法描述
1public String getPath()
返回URL路径部分。
2public String getQuery()
返回URL查询部分。
3public String getAuthority()
获取此 URL 的授权部分。
4public int getPort()
返回URL端口部分
5public int getDefaultPort()
返回协议的默认端口号。
6public String getProtocol()
返回URL的协议
7public String getHost()
返回URL的主机
8public String getFile()
返回URL文件名部分
9public String getRef()
获取此 URL 的锚点(也称为"引用")。
10public URLConnection openConnection() throws IOException
打开一个URL连接,并运行客户端访问资源。

实例

以上实例演示了使用java.net的URL类获取URL的各个部分参数:

URLDemo.java

import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://www.verydoc.net/index.html?language=cn#j2se"); System.out.println("URL 为:" + url.toString()); System.out.println("协议为:" + url.getProtocol()); System.out.println("验证信息:" + url.getAuthority()); System.out.println("文件名及请求参数:" + url.getFile()); System.out.println("主机名:" + url.getHost()); System.out.println("路径:" + url.getPath()); System.out.println("端口:" + url.getPort()); System.out.println("默认端口:" + url.getDefaultPort()); System.out.println("请求参数:" + url.getQuery()); System.out.println("定位位置:" + url.getRef()); }catch(IOException e) { e.printStackTrace(); } } }

以上实例编译运行结果如下:

URL 为:http://www.verydoc.net/index.html?language=cn#j2se
协议为:http
验证信息:www.verydoc.net
文件名及请求参数:/index.html?language=cn
主机名:www.verydoc.net
路径:/index.html
端口:-1
默认端口:80
请求参数:language=cn
定位位置:j2se

URLConnections 类方法

openConnection() 返回一个 java.net.URLConnection。

例如:

  • 如果你连接HTTP协议的URL, openConnection() 方法返回 HttpURLConnection 对象。

  • 如果你连接的URL为一个 JAR 文件, openConnection() 方法将返回 JarURLConnection 对象。

  • 等等...

URLConnection 方法列表如下:

序号方法描述
1Object getContent()
检索URL链接内容
2Object getContent(Class[] classes)
检索URL链接内容
3String getContentEncoding()
返回头部 content-encoding 字段值。
4int getContentLength()
返回头部 content-length字段值
5String getContentType()
返回头部 content-type 字段值
6int getLastModified()
返回头部 last-modified 字段值。
7long getExpiration()
返回头部 expires 字段值。
8long getIfModifiedSince()
返回对象的 ifModifiedSince 字段值。
9public void setDoInput(boolean input)
URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。
10public void setDoOutput(boolean output)
URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。
11public InputStream getInputStream() throws IOException
返回URL的输入流,用于读取资源
12public OutputStream getOutputStream() throws IOException
返回URL的输出流, 用于写入资源。
13public URL getURL()
返回 URLConnection 对象连接的URL

实例

以下实例中URL采用了HTTP 协议。 openConnection 返回HttpURLConnection对象。

URLConnDemo.java

import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://www.verydoc.net"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("请输入 URL 地址"); return; } BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String urlString = ""; String current; while((current = in.readLine()) != null) { urlString += current; } System.out.println(urlString); }catch(IOException e) { e.printStackTrace(); } } }

以上实例编译运行结果如下:

$ javac URLConnDemo.java 
$ java URLConnDemo
.....这里会输出非常教程首页(http://www.verydoc.net)的 HTML 内容.....
Java URL处理

JAVA目录

1.Java 简介
2.Java 变量类型
3.Java StringBuffer 和 StringBuilder 类
4.Java String 类
5.Java Character 类
6.Java 条件语句 – if…else
7.Java 循环结构 – for, while 及 do…while
8.Java 运算符
9.Java File类
10.Java DataOutputStream类
11.Java ByteArrayOutputStream类
12.Java DataInputStream类
13.Java ByteArrayInputStream类
14.Java 正则表达式
15.Java 日期时间
16.Java Enumeration接口
17.Java 包(package)
18.Java 接口
19.Java 封装
20.Java 抽象类
21.Java FileWriter类
22.Java FileReader类
23.Java 数据结构
24.Java Properties 类
25.Java Hashtable 类
26.Java Map 接口
27.Java Dictionary 类
28.Java Stack 类
29.Java Vector 类
30.Java Bitset类
31.Java Applet 基础
32.Java 网络编程
33.Java URL处理
34.Java 序列化
35.Java 泛型
36.Java 文档注释
37.Java 实例 – 删除字符串中的一个字符
38.Java 实例 – 查找字符串最后一次出现的位置
39.Java 实例
40.Java 实例 – 字符串比较
41.Java 实例 – 如何查看当前 Java 运行的版本?
42.Java 实例 – 如何执行指定class文件目录(classpath)
43.Java 实例 – 如何执行编译过 Java 文件
44.Java 实例 – 如何编译 Java 文件
45.Java 实例 – 连接字符串
46.Java 实例 – 字符串格式化
47.Java 实例 – 字符串优化
48.Java 实例 – 字符串性能比较测试
49.Java 实例 – 测试两个字符串区域是否相等
50.Java 实例 – 字符串小写转大写
51.Java 实例 – 字符串分割
52.Java 实例 – 字符串查找
53.Java 实例 – 字符串反转
54.Java 实例 – 字符串替换
55.Java 实例 – 查找数组中的重复元素
56.Java 实例 – 数组扩容
57.Java 实例 – 数组填充
58.Java 实例 – 数组合并
59.Java 实例 – 数组获取最大和最小值
60.Java 实例 – 数组输出
61.Java 实例 – 数组反转
62.Java 实例 – 获取数组长度
63.Java 实例 – 数组添加元素
64.Java 实例 – 数组排序及元素查找
65.Java 实例 – 时间戳转换成时间
66.Java 实例 – 获取年份、月份等
67.Java 实例 – 获取当前时间
68.Java 实例 – 格式化时间(SimpleDateFormat)
69.Java 实例 – 数组并集
70.Java 实例 – 判断数组是否相等
71.Java 实例 – 在数组中查找指定元素
72.Java 实例 – 数组交集
73.Java 实例 – 数组差集
74.Java 实例 – 删除数组元素
75.Java 实例 – 标签(Label)
76.Java 实例 – continue 关键字用法
77.Java 实例 – break 关键字用法
78.Java 实例 – instanceof 关键字用法
79.Java 实例 – 方法覆盖
80.Java 实例 – 阶乘
81.Java 实例 – 斐波那契数列
82.Java 实例 – 汉诺塔算法
83.Java 实例 – 输出数组元素
84.Java 实例 – 方法重载
85.Java 实例 – 检测文件是否存在
86.Java 实例 – 在指定目录中创建文件
87.Java 实例 – 获取文件修改时间
88.Java 实例 – 创建文件
89.Java 实例 – 文件路径比较
90.Java 实例 – 重载(overloading)方法中使用 Varargs
91.Java 实例 – Varargs 可变参数使用
92.Java 实例 – for 和 foreach循环使用
93.Java 实例 – Enum(枚举)构造函数及方法的使用
94.Java 实例 – enum 和 switch 语句使用
95.Java 实例 – 文件写入
96.Java 实例 – 读取文件内容
97.Java 实例 – 删除文件
98.Java 实例 – 将文件内容复制到另一个文件
99.Java 实例 – 向文件中追加数据
100.Java 实例 – 创建临时文件