Java在网络编程方面有很多优点,比如java的网络通信部分封装的很好,很合理,它有很强大的网络编程的类库,并且能够提供有效的安全机制。并且,因为java语言本身具有语法简单,性能优越,支持多平台的特性,因此,在网络编程中很受欢迎。
在java网络应用中,java.net是为实现网络应用程序开发而提供的包,在它里面包含了许多实现网络应用程序需要的类和接口,比如用于处理网络标识符的API、套接字API、URL API等等。
本文将会对java.net中URL(统一资源定位符)类做比较系统的学习和小结。
1.URL类介绍
URL类是java程序用于定位和获取网络数据资源的最简单的方法,它主要是针对URL网络通信中的客户端设计的。在使用URL类进行网络通信时,用户无需了解所使用的协议的细节或者要获取的数据的格式,以及如何与服务器通信等等。只需要把URL地址告诉java程序就好了。
不过,虽然要总结和梳理知识,但是不能绕过一些原理性的背景:URL网络通信其实是建立在远程服务器中专门设立的URL网络通信服务程序的基础上的。在远端的服务器中有为该URL网络通信服务的特定程序,其数据的交换就是就是按照规定的传输协议与该服务程序交互的。本质上,数据的交换是依照传输协议在服务器的服务程序和URL对象之间进行的,但是从客户端程序的角度看,数据的交换是在表示数据类的对象与已经建立连接的URL对象之间进行的,相当于在数据类对象和URL类对象之间进行网络通信和数据交换。不同的传输协议在服务器中都有对应的服务程序。
2.URL网络通信
在java网络编程应用中,客户端与服务器端建立URL网络通信是和URL对象关联的。因此,首先要创建包含传输协议、服务器域名(IP地址)、输入流InputStream等类的对象的绑定,建立URL连接,或者通过输入流对象进行数据交换等操作。总结一下,创建一个URL对象所需要的输入信息包括了:
1)传输协议:如HTTP、NEWS、ftp、FILE……
2)服务器域名:Host Name,服务器ip地址
3)文件名:File name,要读取的文件名,默认值为Index.html
4)文件的路径:File Path,文件所在的位置
5)端口号:Port Number,指定服务器的服务程序,默认是80或者8080
6)参考点标记:ref、reference,用于标识在一个文件中的特定偏移位置(即”瞄定”地址)
描述完整的网络资源的URL格式为:
Communication Protocol://Host Name:PortNumber/File Path/File name#ref
[传输协议] [服务器域名:端口号] [目录名] [文件名] [参考点]
Java.net.URL类有6个构造函数。在创建URL实例对象时,要根据所拥有的信息和信息的形式来选择正确的构造函数。
URL类所支持的协议是与实现有关的。所有的主要JVM虚拟机都可用的唯一协议是HTTP协议和FILE协议。大多数虚拟机还支持https、jar、ftp等。
3.实例
通过URL实现网络连接读取网络数据的步骤如下:
1.使用URL类创建一个URL对象
2.使用URL类的openConnnection操作方法建立URL对象的连接并打开该连接
3.或者使用URL类的openStream操作方法将URL与一个输入流对象绑定\
4.通过操作输入流对象实现网站数据信息的读取。
这是一个创建URL对象并与之建立连接(同时打开该连接),而且和输入流对象绑定的java应用程序框架实例。当在客户端的一个URL对象被创建后,则它包含了一个指定网站的各种信息,例如,网站的属性和内容。URL类提供了获取网站属性的方法,而要获取网站的内容,还需要将一个输入流对象与指定的URL对象绑定,然后按照标准输入流方式操作输入流对象,达到读取网络数据内容的目的。
点击(此处)折叠或打开
… …
关于各种编码的解释和选择可以参考:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.html (java字符串中的各种编码转换)
这篇关于java获取URL资源的文章写得很好:http://lavasoft.blog.51cto.com/62575/120445/