Java知多少(104)网络编程之统一资源定位符URL

统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址。超文本链路由统一资源定位符URL维持。URL的格式是:

    <METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>

其中:Method是传输协议:HOSTNAME是文档和服务器所在的Internet主机名(域名系统中DNS中的点地址);PORT是服务端口号(可省略);PATH是路径名,FILE是文件名。例如:

1     http://www.weixueyuan.net/(http是协议名,www.weixueyuan.net是主机名)
2     http://www.weixueyuan.net/view/6079.html (www.weixueyuan.net是主机名,view/6079.html是文件路径和文件名)

URL类

Java.net包有URL类,一个URL对象可以表示一个网络资源。程序利用URL对象能实现Internet寻址、网络资源的定位连接、在客户机与服务器之间直接访问等。URL类的构造方法是
    URL(String s)
其中,s指出网络中的一个资源。

利用URL对象访问网上资源的方法是:先创建URL对象,如以下代码所示:

1 URL myURL;
2 try {
3     myURL = new URL(“http://www.weixueyuan.net:80/”);
4 }catch(MalformedURLException e){
5     System.out.println(“有错的URL:”+url+e);
6 }

因创建URL对象可能会产生MalformedURLException异常。所以,创建URL对象的代码应出现在try…catch语句块中,以便能捕捉网址错误异常。

URLConnection类

要接收和发关信息还要用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。以下是示意获得URLConnection对象的代码。

    URL mu = new URL(“http://www.sun.com/”);//先要创建一个URL对象
    URLConnection muC = mu.openConnection();//获得URLConnection对象

上述代码说明,先要创建一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可使用URLConnection类提供的以下方法获得流对象和实现网络连接:

  1. getOutputStream():获得向远程主机发送信息的OutputStream流对象;
  2. getInputStream():获得从远程主机获取信息的InputStream流对象。有了网络连接的输入和输出流,程序就可实现远程通信;
  3. connect():设置网络连接。

信息的发送和接收

发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。

参见【例 13-2】程序中的方法readByURL(),该方法说明已知网址读取网页内容的过程。方法利用网址参数创建一个URL对象url,接着利用对象url的openConnect()方法,获得URLConnection对象tc,用对象tc的connect()方法建立网络连接,接着获得网络连接的InputStreamReader类对象in,将对象in,转化成为BufferedRead对象dis,改为缓冲式输入。最后,用对象dis的readLine()方法完成读取网络文本数据。

如同本地数据流一样,网上资源使用结束后,数据流也应及时关闭。例如,代码
    dis.close();
关闭先前代码建立的流dis。

【例 13-2】以数据流方法读取网页内容的应用程序。程序运行时,网址从文本框中读取。

 1 import java.net.*;
 2 import java.awt.*;
 3 import java.awt.event.*;
 4 import java.io.*;
 5 import java.javax.swing.*;
 6 public class Example10_2{
 7     public static void main(String args[]){
 8         new downNetFile();
 9     }
10 }
11 class DownNetFile extends JFrame implements ActionListener{
12     JTextFileld infield = new JTextField(30);
13     JTextarea showArea = new JTextArea();
14     JButton b = new JButton(“download”);JPanel p = new JPanel();
15     DownNetFile(){
16         super(“read network text file application”);
17         Container con = this.getContentPane();
18         p.add(infield);p.add(b);
19         JScrollPane jsp = new JScrollPane(showArea);
20         b.addActionListener(this);
21         con.add(p,”North”);con.add(jsp,”Center”);
22         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23         setSize(500,400);setVisible(true);
24     }
25     public void actionPerformed(ActionEvent e){
26         readByURL(infield.getText());
27     }
28     public void readByURL(String urlName){
29         try{
30             URL url = new URL(urlName);//由网址创建URL对象
31             URLConnection tc = url.openConnectin();//获得URLConnection对象
32             tc.connect();//设置网络连接
33             InptStreamReader in = new InputStreamReader(tc.getInputStream());
34             BufferedReader dis = new BufferedReader(in);//采用缓冲式输入
35             String inline;
36             while((inline = dis.readLine())!=null){
37                 showArea.append(inline +”\n”);
38             }
39             dis.close();//网上资源使用结束后,数据流及时关闭
40         }catch(MalformedURLException e){
41             e.printStackTrace();
42        }
43         catch(IOException e){e.printStacktrace();}
44         /*访问网上资源可能产生MalformedURLException和IOException异常*/
45     }
46 }

系列文章:

Java知多少(上)

Java知多少(中)

Java知多少(78)Java向量(Vector)及其应用

Java知多少(79)哈希表及其应用

Java知多少(80)图形界面设计基础

Java知多少(81)框架窗口基础

Java知多少(82)标签、按钮和按钮事件简介

Java知多少(83)面板基础:JPanel和JScrollPane

Java知多少(84)图形界面之布局设计

Java知多少(85)文本框和文本区

Java知多少(86)文本框和文本区的输入输出

Java知多少(87)选择框和单选按钮

Java知多少(88)列表和组合框

Java知多少(89)列表和组合框

Java知多少(90)菜单

Java知多少(91)对话框

Java知多少(92)滚动条

Java知多少(93)鼠标事件

Java知多少(94)键盘事件

Java知多少(95)绘图基础

Java知多少(96)绘图之设置字型和颜色

Java知多少(97)绘图模式概述

Java知多少(98)Graphics类的绘图方法

Java知多少(99)Graphics2D类的绘图方法

Java知多少(100)图像处理基础

Java知多少(101)图像缓冲技术

Java知多少(102)多媒体基础

Java知多少(103)网络编程之IP地址和InetAddress类

时间: 2024-11-29 01:59:06

Java知多少(104)网络编程之统一资源定位符URL的相关文章

URL 统一资源定位符

全称:Uniform Resource Locator 译为:统一资源定位符 URL(Uniform Resoure Locator 统一资源定位器)是WWW网页的地址,好比一个街道在城市地图上地址.url使用数字和字母按一定顺序排列以确定一个地址. URL的第一个部分http://表示的是要访问的文件的类型.在网上,这几乎总是使用http(意思是超文本转换协议,hypertext transfer protocol.因为它是用来转换网页的协议.)有时也使用ftp(file transferpr

[JAVA &#183; 初级]:22.网络编程

基本概念 计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件.软件.数据信息等资源. 计算机网络的主要功能: 资源共享: 信息传输与集中处理: 均衡负荷与分布处理: 综合信息服务 (www/综合业务数字网络 ISDN). 网络通信协议:计算机网络中实现通信必须有一些约定即通信协议,对速率.传输代码.代码结构.传输控制步骤.出错控制等制定标准. 网络通信接口:为了使两个结点之间能进行对话,必须在它

java基础9:网络编程

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JAVA基础知识之网络编程——-网络基础(多线程下载,get,post)

本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web资源,URLDecode和URLEncode用来转换字符串. 本文会写两个例子来演示java网络编程的一些基本用法. 第一个例子,写一个程序用来模拟多线程下载. 本例中用到的技术有,多线程--多个线程同时读文件写文件,可以加快下载速度, 线程池--在本例中线程池不是必须,甚至是多余,只不过是为了演示

java(十三)网络编程

网络编程 网络模型: OSI(Open System Interconnection开放系统互连)参考模型 OSI模型把网络通信的工作分为7层.1至4层被认为是低层,这些层与数据移动密切相关.5至7层是高层,包含应用程序级的数据. 第1层物理层:原始比特流的传输.集线器.网线 第2层数据链路层:在此层将数据分帧,并处理流控制.本层指定拓扑结构并提供硬件寻址.网卡,网桥,交换机 第3层网络层:本层通过寻址来建立两个节点之间的连接,它包括通过互连网络来路由和中继数据.路由器,防火墙 第4层传输层:常

Java基础篇Socket网络编程中的应用实例

说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作起来就显得非常得心应手,但是对于IO本来就不是多熟悉的哥们来说就有一定的困难了,在搞清楚IO流操作机制的同时还必须会应用到Socket通信中去,否则会对得到的结果感到非常郁闷和懊恼,下面就和大家一起分享一下自己遇到一点小麻烦后的感触以及给出的解决办法. 要求:客户端通过Socket通信技术上传本地一

java基础学习总结——网络编程

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——网络编程 一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程. 二.网络通信协议及接口 三.通信协议分层思想 四.参考模型 五.IP协议 每个人的电脑都有一个独一无二的IP地址,这样互相通信时就不会传错信息了. IP地址是用一个点来分成四段的,在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,每一个字节代表的数最大只能到达255. 六.TCP协议和UD

Java:进阶学习(1)——网络编程

Java:进阶学习(1)--网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket方法 getInetAddress();    远程服务端的IP地址 getPort();    远程服务端的端口 getLocalAddress()    本地客户端的IP地址 getLocalPort()    本地客户端的端口 getInputStream();   

android开发笔记之网络编程—使用TCP协议和URL进行网络编程

手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UDP协议的网络通信. Android也支持JDK提供的URL,URLConnection等网络通信