基本信息出版社:清华大学出版社
页码:564 页
出版日期:2009年02月
ISBN:7302194831/9787302194835
条形码:9787302194835
版本:第1版
装帧:平装
开本:16
正文语种:中文
内容简介 《精通Java网络编程(第2版)》由浅入深地讲解了Java网络编程的基本知识,内容全面,涵盖了从网络编程基础知识到远程方法调用(RMI)等各方面的内容。
全书共分15章,主要内容包括Java开发环境的搭建、Java Applet程序的编写、使用JDBC进行数据库操作、JavaBean和Java Servlet、Java输入/输出流和Java线程、InetAddress类封装网络地址查找资源、使用URL以及URLConnection类封装URL地址访问资源、Socket客户端和服务器端进行TCP可靠连接的网络应用、安全套接字SSL Socket以及使用通道进行非阻塞通信,最后介绍了JavaMail电子邮件的收发、RMI(远程方法调用)。
《精通Java网络编程(第2版)》提供了很多实例程序,包含很多可以实际工作的代码,实现了功能完整的网络客户端和服务器。无论是希望编写特殊用途的Web服务器程序、安全的网络通信程序,还是电子邮件客户端,都会找到可供学习和可以借鉴的代码。
《精通Java网络编程(第2版)》的实例源代码可通过http://www.tupwk.com.cn/downpage下载。
《精通Java网络编程(第2版)》可作为高校计算机相关专业的参考教材,对于广大Java网络程序开发人员也具有很大的参考价值。
目录
第1章 Java网络开发前的准备/1
1.1 Java的安装/1
1.2 JDK 6的配置/3
1.2.1 命令行配置/3
1.2.2 图形界面配置/4
1.2.3 查看Java版本/5
1.2.4 调试JDK/6
1.3 Eclipse 3.3/7
1.3.1 Eclipse简介/7
1.3.2 Eclipse开发环境/9
1.4 Tomcat 6安装配置/11
1.5 一个简单的Java应用程序/12
1.6 本章小结/18
第2章 Java Applet的设计及应用/19
2.1 Applet程序设计基础/19
2.1.1 Applet的基本概念/19
2.1.2 第一个Applet程序/20
2.1.3 Applet类/23
2.2 Java Applet程序设计技巧/26
2.2.1 Java Applet编程显示图像/26
2.2.2 Java Applet播放声音/30
2.2.3 Java Applet编程之文字显示/30
2.2.4 Java Applet编程之响应鼠标键盘/31
2.3 Java Applet实例/33
2.4 本章小结/49
第3章 JDBC编程/51
3.1 结构化查询语言(SQL)/51
3.1.1 SQL概述/52
3.1.2 SQL的数据定义(DDL)/53
3.1.3 SQL的数据操纵(DML)/57
3.1.4 SQL的数据控制(DCL)/62
3.2 JDBC的设计方案和典型用法/63
3.2.1 什么是数据库/63
3.2.2 JDBC的设计方案/66
3.2.3 JDBC的典型用法/73
3.3 JDBC编程概念/76
3.3.1 JDBC介绍/76
3.3.2 建立JDBC连接/77
3.3.3 JDBC发送SQL语句/82
3.3.4 获得SQL语句的执行结果/85
3.4 一个完整的调用JDBC的例子/87
3.5 本章小结/98
第4章 JavaBean的设计及应用/99
4.1 JavaBean基本概念/99
4.1.1 什么是JavaBean/100
4.1.2 JavaBean的应用/101
4.1.3 JavaBean属性/105
4.1.4 JavaBean和EJB的区别/106
4.1.5 配置Eclipse 3.3开发JavaBean/107
4.2 JavaBean相关标签/110
4.2.1 使用JavaBean标签/111
4.2.2 设置属性标签/112
4.2.3 获取属性标签/113
4.3 JSP中JavaBean的使用/113
4.4 JSP + JavaBean Web程序实例/118
4.5 本章小结/124
第5章 Java Servlet的设计及应用/125
5.1 Java Servlet程序设计基础/125
5.1.1 Servlet的基本概念/126
5.1.2 Java Servlet编程及应用/127
5.2 编写Servlet所需的开发环境/130
5.2.1 JSDK(Java Servlet Development Kit)/131
5.2.2 支持Servlet的Web服务器/131
5.2.3 开发Servlet的过程/131
5.3 基本Servlet的编写/135
5.3.1 小服务程序Servlet的编写/135
5.3.2 Servlet和多线程/138
5.3.3 用Servlet控制会话/139
5.4 Servlet实例/143
5.5 本章小结/154
第6章 Java I/O流/155
6.1 输出流/157
6.1.1 OutputStream类/157
6.1.2 装饰类/159
6.1.3 Writer类/161
6.2 输入流/162
6.2.1 InputStream类/162
6.2.2 FilterInputStream类/164
6.2.3 Reader 类/165
6.2.4 StringTokenizer标记类的运用及其改进/166
6.2.5 NIO类/169
6.3 ZIP 流/177
6.3.1 用GZIP进行压缩/178
6.3.2 用ZIP进行多文件保存/180
6.4 I/O流的典型应用/181
6.5 文件拆分实例/189
6.6 本章小结/197
第7章 Java线程机制/199
7.1 线程的概念/199
7.1.1 从Thread类继承/200
7.1.2 从Runnable 接口实现线程/204
7.2 线程同步和死锁/205
7.2.1 线程的状态/206
7.2.2 堵塞状态/206
7.2.3 堵塞状态实例/207
7.2.4 对象的锁/216
7.2.5 线程的同步/217
7.2.6 线程的死锁/218
7.3 线程池/221
7.3.1 为什么需要线程池/221
7.3.2 如何实现线程池/221
7.4 多线程应用/228
7.5 小球碰撞游戏/238
7.6 本章小结/247
第8章 查找Internet资源/249
8.1 Internet基本概念/249
8.1.1 Internet的由来及发展/249
8.1.2 TCP/IP协议/252
8.1.3 域名服务器DNS/259
8.2 InetAddress 类/260
8.2.1 创建一个新的InetAddress对象/261
8.2.2 InetAddress类中提供的方法/267
8.3 应用实例/268
8.4 本章小结/289
第9章 访问Internet资源/291
9.1 URL简介/291
9.2 URL格式/292
9.3 Java中如何使用URL/293
9.3.1 URL类的构造函数/293
9.3.2 URL类/293
9.4 编写简单的HTTP服务器/298
9.4.1 什么是HTTP/298
9.4.2 Web客户/299
9.4.3 Web服务器/299
9.4.4 URLConnection类/300
9.4.5 HttpURLConnection类/304
9.4.6 使用URLConnection和
HttpURLConnection编程/306
9.4.7 编写简单的HTTP服务器/308
9.5 URLEncoder类和URLDecoder类/316
9.5.1 URLEncoder类/316
9.5.2 URLDecoder类/318
9.5.3 HTTP服务器实例/318
9.6 本章小结/325
第10章 客户端套接字/327
10.1 客户/服务器模型/327
10.1.1 网络客户/328
10.1.2 网络服务器/328
10.2 套接字的概念/329
10.2.1 套接字的由来/329
10.2.2 套接字编程基本概念/329
10.3 Socket类和套接字异常/334
10.3.1 Socket类/334
10.3.2 套接字异常/353
10.4 可视化聊天工具/353
10.5 本章小结/358
第11章 服务器端套接字/359
11.1 ServerSocket类/359
11.1.1 构造函数/360
11.1.2 ServerSocket方法的使用/362
11.2 HTTP/370
11.3 代理服务器/378
11.3.1 基础概念/378
11.3.2 设计规划/379
11.3.3 代理服务器的实现/380
11.4 聊天程序实现/390
11.4.1 Server模块/391
11.4.2 Protocols模块/405
11.4.3 Client模块/407
11.4.4 运行结果/423
11.5 本章小结/424
第12章 安全套接字/425
12.1 安全套接字SSL介绍/425
12.1.1 协议的起源/425
12.1.2 协议概述/426
12.1.3 协议规范/426
12.1.4 相关技术/430
12.1.5 与SET协议的比较/431
12.1.6 前景展望/432
12.1.7 SSLSocket和SSLServerSocket/432
12.2 安全客户端套接字SSLSocket类的用法/433
12.2.1 SSLSocketFactory和SSL-ServerSocketFactory/433
12.2.2 SSLSocket类/435
12.3 安全服务器端套接字SSL-ServerSocket类的用法/439
12.4 安全套接字的运用/444
12.4.1 HTTP概览/445
12.4.2 不安全的HTTP服务器/446
12.4.3 安全套接字HTTP服务器/449
12.5 本章小结/454
第13章 非阻塞通信/455
13.1 非阻塞通信概述/455
13.2 Java非阻塞通信/456
13.2.1 创建非阻塞通道/456
13.2.2 创建非阻塞C/S实例/464
13.2.3 选择器(Selector)/469
13.2.4 缓冲区(Buffer)/470
13.3 服务器编程实例/473
13.4 本章小结/477
第14章 JavaMail邮件系统/479
14.1 目前流行的协议/479
14.1.1 SMTP/479
14.1.2 邮件发送实例/481
14.1.3 POP3/486
14.1.4 IMAP/495
14.1.5 MIME/496
14.2 JavaMail介绍/496
14.2.1 JavaMail分层体系/496
14.2.2 Java Mail API核心类/497
14.3 E-mail基本任务/505
14.4 完整的JavaMail例子/513
14.5 本章小结/527
第15章 RMI远程方法调用/529
15.1 RMI介绍/529
15.1.1 网络构架/530
15.1.2 远程接口/530
15.1.3 RMI开发实例/531
15.2 java.rmi包/537
15.2.1 Remote接口/537
15.2.2 Naming 类/538
15.2.3 Remote Exception类/540
15.2.4 使用RMI的应用程序/541
15.3 远程调用中的参数传递/545
15.3.1 传递非远程对象/545
15.3.2 一个购买商品系统实例/546
15.3.3 传递远程对象/555
15.3.4 Cloning 远程对象/557
15.4 Java IDL和CORBA/557
15.4.1 CORBA/557
15.4.2 Java IDL应用编程/558
15.4.3 CORBA与RMI的对比/563
15.5 本章小结/564
……
序言 Java 技术是 Sun公司于 1995 年推出的一种极富创造力的计算平台。最初称为Oak,1995 年被重命名为Java编程语言。
Java由于其面向对象和跨平台的特性而得到了广泛的应用。随着互联网技术的发展,Java在网络编程方面的优势更加突出。Java似乎是专门为网络设计的,用来开发网络应用特别便利。在Internet时代,Java编程语言在网络上的应用越来越广泛,学习和使用Java的人越来越多。
本书使用Eclipse 最新版本3.3作为Java网络编程的开发平台。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。本身只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Tools,JDT)。Eclipse还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,允许构建与Eclipse环境无缝集成的工具。
这种平等和一致性并不仅限于Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但用途并不限于Java 语言。如支持C/C++、COBOL和Eiffel等编程语言的插件已经可用。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,如内容管理系统。
本书使用Tomcat 6作为JavaBean和Java Servlet应用的Web服务器。Tomcat是一个免费的开源的Serlvet容器,是Apache基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat不仅仅是一个Servlet容器,也具有传统的Web服务器处理HTML页面的功能。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。
本书的数据库使用Access、SQL Server和MySQL。MySQL是最受欢迎的开源SQL数据库管理系统,由MySQL AB开发、发布和支持。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以嵌入到一个大配置(mass-deployed)的软件中。
本书有以下几个特点。
● 语言简洁易懂,知识点分类明确,代码注释详尽。
● 理论联系实际,结合Java网络应用的相关API,提供可用的实例代码,在实际应用中理解Java网络编程。
● 实例众多,提供了可用的有针对性的实例,可以在工作和学习中直接使用。
● 讲解Java语言在网络方面的应用,而非语法入门书,主要面向具有一定Java基础的开发者。
本书内容组织
本书可以分为两部分,第一部分从第1章到第7章,介绍了Java网络编程的必备知识;第二部分从第7章到第15章,介绍了Java网络编程的主要应用。
第1章介绍了开发环境的搭建以及JDK的安装和配置、Eclipse 3.3的开发界面和Tomcat 6的安装。
第2章和第3章介绍了Java Applet程序的编写以及使用JDBC连接数据库,进行数据库的操作。
第4章和第5章介绍了JavaBean和Java Servlet这两个Java基本的Web网络应用,通过Tomcat 容器,开发Internet网络应用。
第6章和第7章介绍了Java网络编程的主要基础知识:输入/输出流和Java线程。网络通信主要是通过流的形式进行的,网络的通信和数据的处理又通过多线程提高处理效率。
第8章和第9章介绍了InetAddress类封装网络地址查找资源、使用URL以及URLConnection类封装URL地址访问资源。
第10章和第11章介绍了客户端Socket和服务器端ServerSocket进行基于TCP的可靠连接的网络应用。
第12章和第13章介绍了SSLSocket进行安全的可靠连接以及使用通道进行非阻塞通信。
第14章介绍了JavaMail电子邮件的收发。
第15章介绍了RMI(远程方法调用)分布式应用的开发。
本书的实例源代码可通过http://www.tupwk.com.cn/downpage下载。
本书是集体智慧的结晶,除封面署名作者外,参加编写的人员还有胡小峰、黄炳强、林一松、刘玮、刘海、马志刚、沈炜、师丽红、苏淑滢、汪杰、吴超、徐争前、刘海英、刘洪涛等,在此一并致谢。
由于时间仓促,作者的水平有限,书中不妥之处在所难免,敬请读者批评指正。
文摘 插图:

14.1.3 POP3
邮局协议(Post Office Protocol Version 3,POP3)提供了一种对邮件消息进行排队的标准机制,这样接收者以后才能检索邮件。POP3服务器也运行在TCP/IP之上,并且在默认端口110上监听。在客户和服务器之间进行了初始的会话之后,基于文本的命令序列可以被交换。POP3客户利用用户名和口令向POP3服务器认证。POP3中的认证是在一种未加密的会话基础之上进行的。POP3客户发出一系列命令发送给POP3服务器,如请求客户邮箱队列的状态、请求列出的邮箱队列的内容和请求检索实际的消息。POP3代表一种存储转发类型的消息传递服务。现在,大部分邮件服务器都采用SMTP发送邮件,同时使用POP3接收电子邮件消息。
下面介绍如何通过POP3接收邮件,并且如果不特殊指明,POP指的即是POP3。通常的邮件服务器同时支持SMTP和POP,SMTP运行在25端口上,而POP运行在110端口上。
1. POP3命令
与SMTP一样,POP也是由建立在TCP基础之上的文本命令构成。和其他的文本命令语言一样,POP3命令也是由一个命令后跟零个或多个参数组成的。其形式为:
COMMAND …
每个参数最多可以有40个字符长。
但是POP3服务器在执行命令后返回客户端的响应与SMTP服务器有所不同。本章前半部分讲述的SMTP中,服务器对命令响应的形式是“状态码
正确响应 以+OK开头,后跟文本或以文本编码的状态信息,以回车换行结束;
错误响应 以ERR开头,后跟文本或以文本编码的状态信息,以回车换行结束。
因此,在对POP进行编程时,只需要对读取的响应信息的第一个字符做出判断,就可以确定服务器是否正确理解了客户的命令并执行。关于POP的详细描述和定义,请参考RFC1725中对此的定义。
对应某些命令的响应信息可能有多行。这种情况下,当服务器传送完第一行响应信息(第一行信息包含+OK/ERR),就直接发送后续的行,每一行同样以回车换行结尾。当所有的响应行都发送后,接着发送一个结束行。结束行包含一个结束符。这个结束符为“.”(其ASCII编码为046),然后跟一个回车换行。由于每一个响应信息行都包含回车换行符,因此,响应信息结束处一定有这样五个字节CRLF.CRLF。当确定多行响应信息是否结束时,如果遇到CRLF.CRLF就可以认为响应结束,再把CRLF.CRLF
……