当前课程知识点:JAVA程序设计进阶 >  第四章 网络编程(上) >  4.1 URL对象 >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

Video课程教案、知识点、字幕

各位同学大家好

这一节我们将介绍

如何Java来访问互联网上的外部资源

尤其是如何通过Java的URL对象

来访问网络资源

互联网上的很多资源

都是通过IP地址来进行表示的

那第一版的IP地址

指的是IPv4地址

它总共32位有4个字节

我给大家举个例子

比如说166.111.136.3

这是一个IP地址

但这个地址的话

大家还有可能能记得住它

但是随着互联网资源越来越多

原有的地址已经无法表示

这么多资源了

那我们又出现了IPv6的地址

那IPv6的地址

总共包含128位16个字节

那它能够表示的这个地址范围

更加宽广

因为IP地址并不容易让人类记住

所以在互联网上又出现另一套机制

就是主机名也叫域名

比如说清华大学的域名就是

www.tsinghua.edu.cn

那这样的一个域名的话

人类是非常容易记住的

它背后也对应着有一个IP地址

那另外一个概念叫端口号

也就是说我们一台服务器

或者某一个IP地址

它在提供服务的时候

它可以提供多种服务

每种服务都通过端口号来进行服务

比如说80端口

就是我们通常访问外部资源的时候

用的这个端口

包括21端口是进行ftp时候使用的

23端口是进行远程登录telnet使用的

那25端口是我们用来发送邮件

比如smtp这个协议

它要用到这个端口

那再整个端口号当中

1到1024为保留端口

一般我们自己写程序的话

最好不要使用这些端口

那我们怎么能理解这个端口呢

其实这个端口号

就相当于大家去银行

你要去取钱

那到了一家银行里面

这个柜员会为大家提供服务

那它是通过我们那个银行里面的窗口

给大家服务的

每个窗口后面坐一个柜员

所以相当于我们这里的端口号

就相当于我们银行里的一个窗口

而每一家具体的银行

就相当于我们某一台具体的这个服务器

在这个服务器上面

它可以提供多种类型的服务

比如说有http telnet ftp smtp等等

那互联网上有这么多的有用的信息

我们怎么能够把它读取下来

或者说抓取下来

放到我们的电脑上去加以利用和分析

给大家举个例子

比如说新浪网上面有很多新闻

你想不想把这个新浪网的

所有的相关的这个新闻

都给抓下来呢

我们看我们这个例子

import java.net*

那由于我们要用到网络这个资源

所以我们要一定要用到网络这个包

那java.net就是我们的网络包

然后第二行import.java.io.*

我们要用到这个输入输出流

所以要把这个io这个包给导入进来

我们自己这个类名叫public classURL reader

就是网络资源的读取器

那它有个主方法

主方法里面throws Exception

就是主方法要抛弃各种这个异常

我们看主方法里面到底有哪些代码

URL cs=new URL

http://www.sina.com/

那URL是我们java.net这个包里面的一个类

这个类就用来表示互联网上的一个网站

或者说一个资源

那我们在实际画它的时候

我们给它一个域名

那现在我们给它的域名

就是新浪网的域名

那表明我们用URL cs这个对象

来去表示了互联网上新浪网的资源

那下面一步是我们想把新浪网的

这些内容读取下来

那怎么读呢

就需要用到我们过去曾经学过的

输入输出流的知识

我们构造了一个缓冲输入流

Buffered Reader in

然后调入它的构造方法

new BuferReader

而构造方法里的参数是什么呢

newInputStreamReader

这是一个输入流的一个转换流

然后里面还有一个参数

cs.openStream

cs就是我们刚才那个URL这个对象

open Stream的话就是打开它这个流

它是一个输入流

这样的话我们就构造了一个

Buffered Reader in

那下面我们要去BufferedReader

去读取内容了

我们首先构造了一个字符串对象

inputLine

然后下一句是while inputLine=in.readLine

那我们读一行

我们从这个输入流读一行

实际上就是从我们的

互联网上的新浪这个网站

去读它的一行

读完一如果它读出来不等于空

也就是说没有读到结尾处

我们就把这一行的内容给输出打印出来

但是等这些所有内容都读完了以后

我们就关闭这个流

那这个程序就可以把新浪网的内容

给它抓到你的电脑上

当然需要提醒大家注意的是

你抓的只不过是新浪网的

首页的那个html

如果你还想要再往下

这个各种链接往下抓取的话

你还得自己写程序

去读取它的二级链接

但是这个程序已经非常有意思了

所以我们的同学

可以下去回去运行这个程序

然后把你想要抓的

抓取的网络资源

放在我们这个程序里面

比如现在我说的是抓新浪

你也可以抓搜狐

那在这里面我们用到一些类

首先用到的是URL类

这个类的话是一致资源定位器的简称

它表现的是互联网上

某一个资源的地址

那当我们表示地址的时候

它的格式是这样的

前面是协议protocol加一个冒号

后面是具体的这些资源的名称

当然我们协议有很多种了

最常见的比如说用htttp ftp等等

资源名后面应该是完整的资源地址

包括它的主机名 端口号 文件名

甚至是文件内部的一个引用

我给大家举这几个例子

比如说第一个网站

http://www.sun.com/

那第二个这个资源是那个

home.netscape.com

然后后面还有welcome.html

把它的这个网页的这个名字也写出来

第三个资源名字

甚至在后面加了一个Bottom

也就是把这个网页中的位置

也给标出来了

第四个就是我们的file

表示的是我们当前文件目录上的一个资源

在这一页ppt上

大家看到的是构造URL对象的

很多构造方法

比如说第一个public URL string spec

那就是你直接把这个网络资源

以一个字符串的方式给它表示出来

并作为参数传递给URL资源

然后第二个的方法是public URL

URL context.String spet

也就是说我还可以用一个URL对象

来表示它的这个上下文的这个环境

然后我们可以看底下的很多例子

比如直接给一个资源名字

或者给一个资源名字后

后面再跟一个这个

(gamelan.game.hm)

这样的超文本文件等等之类

都可以来构造一个URL对象

那URL的话还有其他的这个构造方法

比如说通过字符串给出它的访问协议

通过字符串给它的主机名

以及通过字符串给出它的文件名

甚至另外一个这个构造方法

还可以给出我们这个资源的端口号

所以都可以很丰富的

表达了互联网上的这个资源

需要提醒大家的是

在我们构造URL对象的时候

一定要进行例外处理

那这个里面用的是try catch

然后catch是Malformed URLException

也就是一种不符合常规的URL格式的异常

因为你在给一个URL的地址的时候

有可能给的地址是不符合规范的

这时候我们的java也不知道怎么处理

所以就会给你抛出这种异常

URL它既然是一个类

它本身就会有很多方法

来访问这个类的对象的各种属性

比如说public String getProtocol

这个方法就能返回你所描述的

这个URL对象访问它的时候

所采用的协议

getHost获得它的主机名

getPort获得它的端口号

getFile获得它的这个文件名

getRef获得它的引用地址

这一节我们通过介绍URL对象

来表示互联网上的资源

通过这个类的很多方法

我们就能够很好的访问这些资源

JAVA程序设计进阶课程列表:

第一章 线程(上)

-1.0 导学

--Video

-1.1 线程的基本概念

--Video

-1.1 线程的基本概念--作业

-1.2 通过Thread类创建线程

--Video

-1.2 通过Thread类创建线程--作业

-1.3 线程的休眠

--Video

-1.3 线程的休眠--作业

-1.4 Thread类详解

--Video

-1.5 通过Runnable接口创建线程

--Video

-1.5 通过Runnable接口创建线程--作业

-1.6 线程内部的数据共享

--Video

第二章 线程(中)

-2.0 导学

--Video

-2.1 线程同步的思路

--Video

-2.2 线程同步的实现方式—Synchronization

--Video

-2.3 线程的等待与唤醒

--Video

-2.4 后台进程

--Video

-2.5 线程的生命周期与死锁

--Video

-2.6 线程的调度

--Video

第三章 线程(下)

-3.0 导学

--Video

-3.1 线程安全与线程兼容与对立

--Video

-3.2 线程的安全实现-互斥同步

--Video

-3.3 线程的安全实现-非阻塞同步

--Video

-3.4 线程的安全实现-无同步方案

--Video

-3.5 锁优化

--Video

第四章 网络编程(上)

-4.0 导学

--Video

-4.1 URL对象

--Video

-4.2 URLConnection对象

--Video

-4.3 Get请求与Post请求

--Video

-4.4 Socket通信原理

--Video

-4.5 Socket通信实现

--Video

第五章 网络编程(下)

-5.0 导学

--Video

-5.1 Socket 多客户端通信实现

--Video

-5.2 数据报通信

--Video

-5.3 使用数据报进行广播通信

--Video

-5.4 网络聊天程序

--Video

第六章 Java虚拟机

-6.0 导学

--Video

-6.1 Java虚拟机概念

--Video

-6.2 Java虚拟机内存划分

--Video

-6.3 Java虚拟机类加载机制

--Video

-6.4 判断对象是否存活算法及对象引用

--Video

-6.5 分代垃圾回收

--Video

-6.6 典型的垃圾收集算法

--Video

-6.7典型的垃圾收集器

--Video

第七章 深入集合Collection

-7.0 导学

--Video

-7.1 集合框架与ArrayList

--Video

-7.2 LinkedList

--Video

-7.3 HashMap与HashTable

--Video

-7.4 TreeMap与LinkedHashMap

--Video

-7.5 HashSet

--Video

第八章 反射与代理机制

-8.0 导学

--Video

-8.1 Java反射机制

--Video

-8.2 Java静态代理

--Video

-8.3 Java动态代理

--Video

-8.4 Java 反射扩展-jvm加载类原理

--Video

-8.5 Java进阶课程总结

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。