书籍作者:孙卫琴 | ISBN:9787121383151 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7791 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书结合大量典性的实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于*新的JDK10版本。本书内容包括:Java网络编程的基础知识、 套接字编程、非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、XML数据处理和Web服务。阅读本书,读者不仅可以掌握网络编程的实用技术,还可以进一步提高按照面向对象的思想来设计和编写Java软件的能力。本书适用于所有Java编程人员,包括Java初学者及资深Java开发人员。本书还可作为高校的Java教材,以及企业Java培训教材。
孙卫琴,知名IT作家和Java专家,毕业于上海交通大学,随后主要从事基于Java的软件开发工作,在此其间还从事Java方面的培训和咨询工作。2002年开始Java技术领域的创作,文风清晰严谨、深入浅出,深受读者欢迎,其多部作品的销量在同类书籍中一度位居全国榜首。代表著作有:《大话Java程序设计从入门到精通》《Java面向对象编程》《Java网络编程核心技术详解》《Java逍遥游记》《Hibernate逍遥游记》《精通JPA与Hibernate: Java对象持久化技术详解》 《精通Struts: 基于MVC的Java Web设计与开发》 《Tomcat与Java Web开发技术详解》 《Java 2认证考试指南与试题解析》
知名Java开发专家、IT技术作家孙卫琴老师畅销作品再度升级
业界经典10年畅销图书《Java面向对象编程》的姊妹篇
以行云流水般的语言诠释Java网络编程核心
基于全新Java技术、程序员的优选Java指南、配备视频微课
在 IT 行业,大多数 Java 程序员都看过孙卫琴老师的书。孙老师的书,清晰严谨,把复杂的技术架构层层剖析,结合典型的实例细致讲解,读者只要静下心来好好品读,就能深入 Java 技术的殿堂,领悟其中的核心思想,并掌握开发实际应用的种种技能。
读好书,犹如和名师面对面交流,可以全面地学习和传承名师在这个技术领域里的经
验和学识。孙老师及其同仁孜孜不倦地钻研 Java 技术,紧跟技术前沿,传道授业、著书立说。无数程序员从中受益,从 Java 小白成长为 Java 大牛。
Oracle 作为 Java 领域的技术引领者和规范制定者,非常欢迎中国的作者把最新的 Java技术介绍给广大 Java 开发人员,孙老师的书刚好满足了这一需求。如今,Java 在网络应用开发领域得到了非常广泛的运用,这本书深入浅出地介绍了套接字编程、非阻塞通信、数据报通信、RMI 框架、安全网络通信和 Web 服务等网络编程技术。读者如果希望成为高级Java 开发人员,本书是必备的参考手册和学习宝典。
甲骨文人才产业基地作为 Oracle 在中国的业务拓展公司,非常欣赏这本书,许多老师和学员都用本书作为首选的 Java 网络编程参考书。相信读者能够从中受益匪浅,轻松上手,循序渐进,最后精通技术。
王正平
甲骨文人才产业基地教育产品部总监
Java 语言是第 1 个完全融入网络的语言。Java 语言之所以适合编写网络应用程序,归功于它的以下三方面的优势。
(1)Java 语言与生俱来就是与平台无关的。Java 程序能够运行在不同的平台上,运行在不同平台上的 Java 程序之间能够方便地进行网络通信。
(2)Java 语言具有完善的安全机制,可以对程序进行权限检查,这对网络程序至关重要。
(3)JDK 类库提供了丰富的网络类库(如套接字 API、JavaMail API 和 JDBC API 等),大大简化了网络程序的开发过程。
本书将展示如何利用 Java 网络类库来快速便捷地创建网络应用程序,致力于完成以下任务。
实现访问 HTTP 服务器的客户程序。
实现 HTTP 服务器。
实现多线程的服务器,以及非阻塞的服务器。
解析并展示 HTML 页面。
通过 JDBC API 访问数据库。
通过 JavaMail API 接收和发送电子邮件。
利用 RMI 框架实现分布式的软件系统。
进行安全的网络通信,对数据加密,验证身份,保证数据的完整性。
运用第三方开源软件框架,如 Axis、Spring 和 CXF,开发 Web 服务,实现分布式的软件系统。
本书的组织结构和主要内容
本书结合大量典型的实例,详细介绍了用 Java 来编写网络应用程序的技术。本书内容包括:Java 网络编程的基础知识、套接字编程、非阻塞通信、创建 HTTP 服务器与客户程序、数据报通信、对象的序列化与反序列化、Java 反射机制、RMI 框架、JDBC API、MVC设计模式、JavaMail API、安全网络通信、XML 数据处理和 Web 服务。
本书第 1 章介绍了分层的网络体系结构,Java 网络程序位于最上层——应用层,并且通过套接字访问底层网络,也可以说,套接字为应用层封装了底层网络传输数据的细节。套接字(Socket)是 Java 网络编程的基础,第 2 章和第 3 章分别详细介绍了 Socket 与 ServerSocket 的用法。Java 网络程序都采用客户/服务器模式,客户端发出获得Java 网络编程核心技术详解特定服务的请求,服务器接收请求,执行客户端所请求的操作,然后向客户端发回响应。
本书在介绍服务器端编程时,探讨了服务器端实现并发响应多个客户请求的两种方式:一种方式是运用线程池(第 3 章),还有一种方式是采用非阻塞通信(第 4 章)。在介绍客户端编程时,介绍了 JDK 提供的一种通用的客户端协议处理框架(第 6 章)。
利用 Java 网络 API,可以实现基于各种应用层协议(比如 HTTP 和 FTP)的服务器程序与客户程序,本书侧重介绍了 HTTP 服务器(第 5 章)与 HTTP 客户程序(第 7 章)的实现方法,HTTP 客户程序也被称为浏览器。
本书还介绍了两种分布式的软件架构:RMI(第 11 章)和 Web 服务(第 17 章和第18 章)。这些分布式架构主要解决的问题是,如何让客户端调用服务器端的远程对象。RMI是 JDK 自带的,它要求客户端与服务器端都是 Java 程序,而 Web 服务允许用任意编程语言编写的客户程序与服务器程序之间能够通信。本书详细介绍了 RMI 框架的用法。RMI框架在其实现中封装了用套接字通信的细节,此外,RMI 框架的实现会把客户端的方法调用请求信息序列化为字节序列,把它发送给服务器端,然后在服务器端再通过反序列化把字节序列还原为方法调用请求。RMI 框架还运用了动态代理机制,为客户端提供了远程对象的代理。客户端实际上直接访问的是远程对象的代理。为了帮助读者理解 RMI 框架的实现原理,本书第 9 章和第 10 章分别介绍了 Java 序列化以及反射机制。在介绍反射机制时,还介绍了动态代理。
本书第 17 章和第 18 章介绍了在开源软件框架 Axis、Spring 和 CXF 中创建和发布 Web服务的方法。这些框架软件封装了客户端和服务器端底层通信的细节,使得开发人员只要利用框架软件的 API、注解和配置文件,就能方便地编写与具体业务领域相关的服务程序和客户程序。
本书还介绍了两个常用的客户端的网络 API:JDBC API(第 12 章)和 JavaMail API(第 14 章),这两个 API 分别用于访问数据库服务器和邮件服务器,在它们的实现中都封装了用套接字与服务器通信的细节。Java 客户程序可以通过 JDBC API 来访问各种数据服务器,还可以通过 JavaMail API 来访问各种邮件服务器。
本书第 13 章介绍了一个运用了 MVC 设计模式和 RMI 框架的综合应用。MVC 设计模式把实际的软件应用分为视图、控制器和模型 3 个层次,每个层次相对独立。本书的范例把模型作为远程对象放到 RMI 的服务器端,把视图和控制器放到 RMI 的客户端。
本书第 15 章介绍了 SSLSocket,它支持 SSL(Server Socket Layer)协议和 TLS(TransportLayer Security)协议。运用 SSLSocket,可以实现安全的网络通信,网络上传输的是被加密的数据,并且通信两端还能验证对方的身份。
本书在介绍以上技术时,采用 UML建模语言中的类框图和时序图来展示对象模型,以及类与类之间的协作关系。此外,本书还把一些常见的设计模式,如静态代理模式、动态代理模式和 MVC设计模式等运用到实际例子中。阅读本书,读者不仅可以掌握 Java网络编程的实用技术,还可以进一步提高按照面向对象的思想来设计和编写 Java 软件的能力。
这本书是否适合您
阅读本书,要求读者已经具备了 Java 编程的基础知识。对于不熟悉 Java 语言的读者,建议先阅读本书作者的另一本书《Java 面向对象编程》,本书是它的姊妹篇。《Java 面向对象编程》自 2006 年 7 月出版后,一直畅销至今,受到了广大 IT 读者的欢迎。本书围绕着网络编程,进一步介绍了 Java 语言的一些高级特性,这些特性是作为一个高级 Java 开发人员必须知晓的。深入了解这些高级特性,有助于开发人员熟练地开发分布式的软件系统,或者轻松地学习和掌握现有的分布式软件架构。
本书一方面由浅入深地组织内容,满足 Java 网络编程初学者的需求,另一方面与实际项目紧密结合,介绍了线程池、非阻塞通信和动态代理等高级话题,可作为 Java 开发人员的参考手册。本书还可以作为高校的 Java 教材,以及企业培训教材。
致谢
本书在编写过程中得到了 Oracle 公司在技术上的大力支持。此外,JavaThinker.net 网站的网友为本书的编写提供了有益的帮助,在此表示衷心的感谢!尽管我们尽了最大努力,
但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正。以下网址是作者为本书提供的技术支持网址,读者可通过它下载与本书相关的资源(如源代码、软件安装程序和视频课程、PPT 讲义等),还可以与其他读者交流学习心得,以及对本书提出宝贵意见。
孙卫琴
第 1 章 Java 网络编程入门
1.1 进程之间的通信
1.2 计算机网络的概念
1.3 OSI 参考模型
1.4 TCP/IP 参考模型和 TCP/IP
1.4.1 IP ?
1.4.2 TCP 以及端口
1.4.3 RFC 简介
1.4.4 客户/服务器通信模式
1.5 用 Java 编写客户/服务器程序
1.5.1 创建 EchoServer
1.5.2 创建 EchoClient
1.6 小结
1.7 练习题
第 2 章 Socket 用法详解
2.1 构造 Socket
2.1.1 设定等待建立连接的超时时间
2.1.2 设定服务器的地址
2.1.3 设定客户端的地址
2.1.4 客户连接服务器时可能抛出的异常
2.1.5 使用代理服务器
2.1.6 InetAddress 地址类的用法
2.1.7 NetworkInterface 类的用法
2.2 获取 Socket 的信息
2.3 关闭 Socket
2.4 半关闭 Socket
2.5 设置 Socket 的选项
2.5.1 TCP_NODELAY 选项
2.5.2 SO_RESUSEADDR 选项
2.5.3 SO_TIMEOUT 选项
2.5.4 SO_LINGER 选项
2.5.5 SO_RCVBUF 选项
2.5.6 SO_SNDBUF 选项
2.5.7 SO_KEEPALIVE 选项
2.5.8 OOBINLINE 选项
2.5.9 IP 服务类型选项
2.5.10 设定连接时间、延迟和带宽的相对重要性
2.6 发送邮件的 SMTP 客户程序
2.7 小结
2.8 练习题
第 3 章 ServerSocket 用法详解
3.1 构造 ServerSocket
3.1.1 绑定端口
3.1.2 设定客户连接请求队列的长度
3.1.3 设定绑定的 IP 地址
3.1.4 默认构造方法的作用
3.2 接收和关闭与客户的连接
3.3 关闭 ServerSocket
3.4 获取 ServerSocket 的信息
3.5 ServerSocket 选项
3.5.1 SO_TIMEOUT 选项
3.5.2 SO_REUSEADDR 选项
3.5.3 SO_RCVBUF 选项
3.5.4 设定连接时间、延迟和带宽的相对重要
3.6 创建多线程的服务器
3.6.1 为每个客户分配一个线程
3.6.2 创建线程池
3.6.3 使用 JDK 类库提供的线程池
3.6.4 向线程池提交有异步运算结果的任务
3.6.5 使用线程池的注意事项
3.7 关闭服务器
3.8 小结
3.9 练习题
第 4 章 非阻塞通信
4.1 线程阻塞的概念
4.1.1 线程阻塞的原因
4.1.2 服务器程序用多线程处理阻塞通信的局限
4.1.3 非阻塞通信的基本思想
4.2 非阻塞通信 API 的用法
4.2.1 缓冲区
4.2.2 字符编码 Charset
4.2.3 通道
4.2.4 SelectableChannel 类
4.2.5 ServerSocketChannel 类
4.2.6 SocketChannel 类
4.2.7 Selector 类
4.2.8 SelectionKey 类
4.2.9 Channels 类
4.2.10 Socket 选项
4.3 服务器编程范例
4.3.1 创建阻塞的 EchoServer
4.3.2 创建非阻塞的 EchoServer
4.3.3 在 EchoServer 中混合用阻塞模式与非阻塞模式
4.4 客户端编程范例
4.4.1 创建阻塞的 EchoClient
4.4.2 创建非阻塞的 EchoClient
4.5 异步通道和异步运算结果
4.6 在 GUI 中用 SwingWorker 实现异步交互
4.6.1 SwingWorker 类的用法
4.6.2 用 SwingWorker 类来展示进度条
4.6.3 用 SwingWorker 类实现异步的 AsynEchoClient
4.7 小结
4.8 练习题
第 5 章 创建非阻塞的 HTTP 服务器
5.1 HTTP 简介
5.1.1 HTTP 请求格式
5.1.2 HTTP 响应格式
5.1.3 测试 HTTP 请求
5.2 创建非阻塞的 HTTP 服务器
5.2.1 服务器主程序:HttpServer 类
5.2.2 具有自动增长的缓冲区的 ChannelIO 类
5.2.3 负责处理各种事件的 Handler 接口
5.2.4 负责处理接收连接就绪事件的 AcceptHandler 类
5.2.5 负责接收 HTTP 请求和发送 HTTP 响应的 RequestHandler 类
5.2.6 代表 HTTP 请求的 Request 类
5.2.7 代表 HTTP 响应的 Response 类
5.2.8 代表响应正文的 Content 接口及其实现类
5.2.9 运行 HTTP 服务器
5.3 小结
5.4 练习题
第 6 章 客户端协议处理框架
6.1 客户端协议处理框架的主要类
6.2 在客户程序中运用协议处理框架
6.2.1 URL 类的用法
6.2.2 URLConnection 类的用法
6.3 实现协议处理框架
6.3.1 创建 EchoURLConnection 类
6.3.2 创建 EchoURLStreamHandler 及工厂类
6.3.3 创建 EchoContentHandler 类及工厂类
6.3.4 在 EchoClient 类中运用 ECHO 协议处理框架
6.4 小结
6.5 练习题
第 7 章 用 Swing 组件展示 HTML 文档
7.1 在按钮等组件上展示 HTML 文档
7.2 用 JEditorPane 组件创建简单的浏览器
7.2.1 处理 HTML 页面上的超级链接
7.2.2 处理 HTML 页面上的表单
7.2.3 创建浏览器程序
7.3 小结
7.4 练习题
第 8 章 基于 UDP 的数据报和套接字
8.1 UDP 简介
8.2 DatagramPacket 类
8.2.1 选择数据报的大小
8.2.2 读取和设置 DatagramPacket 的属性
8.2.3 数据格式的转换
8.2.4 重用 DatagramPacket
8.3 DatagramSocket 类
8.3.1 构造 DatagramSocket
8.3.2 接收和发送数据报
8.3.3 管理连接
8.3.4 关闭 DatagramSocket
8.3.5 DatagramSocket 的选项
8.3.6 IP 服务类型选项
8.4 DatagramChannel 类
8.4.1 创建 DatagramChannel
8.4.2 管理连接
8.4.3 用 send()方法发送数据报
8.4.4 用 receive()方法接收数据报
8.4.5 用 write()方法发送数据报
8.4.6 用 read()方法接收数据报
8.4.7 Socket 选项
8.5 组播
8.5.1 MulticastSocket 类
8.5.2 组播 Socket 的范例
8.6 小结
8.7 练习题
第 9 章 对象的序列化与反序列化
9.1 JDK 类库中的序列化 API
9.1.1 把对象序列化到文件
9.1.2 把对象序列化到网络
9.2 实现 Serializable 接口
9.2.1 序列化对象图
9.2.2 控制序列化的行为
9.2.3 readResolve()方法在单例类中的运用
9.3 实现 Externalizable 接口
9.4 可序列化类的不同版本的序列化兼容性
9.5 小结
9.6 练习题
第 10 章 Java 语言的反射机制
10.1 Java Reflection API 简介
10.2 在远程方法调用中运用反射机制
10.3 代理模式
10.3.1 静态代理类
10.3.2 动态代理类
10.3.3 在远程方法调用中运用代理类
10.4 小结
10.5 练习题
第 11 章 RMI 框架
11.1 RMI 的基本原理
11.2 创建第 1 个 RMI 应用
11.2.1 创建远程接口
11.2.2 创建远程类
11.2.3 创建服务器程序
11.2.4 创建客户程序
11.2.5 运行 RMI 应用
11.3 远程对象工厂设计模式
11.4 远程方法中的参数与返回值传递
11.5 回调客户端的远程对象
11.6 远程对象的并发访问
11.7 分布式垃圾收集
11.8 远程对象的 equals()、hashCode()和 clone()方法
11.9 使用安全管理器
11.10 RMI 应用的部署以及类的动态加载
11.11 远程激活
11.12 小结
11.13 练习题
第 12 章 通过 JDBC API 访问数据库
12.1 JDBC 的实现原理
12.2 安装和配置 MySQL 数据库
12.3 JDBC API 简介
12.4 JDBC API 的基本用法
12.4.1 处理字符编码的转换
12.4.2 把连接数据库的各种属性放在配置文件中
12.4.3 管理 Connection、Statement 和 ResultSet 对象的生命周期
12.4.4 执行 SQL 脚本文件
12.4.5 处理 SQLException
12.4.6 输出 JDBC 日志
12.4.7 获得新插入记录的主键值
12.4.8 设置批量抓取属性
12.4.9 检测驱动器使用的 JDBC 版本
12.4.10 元数据
12.5 可滚动以及可更新的结果集
12.6 行集
12.7 调用存储过程
12.8 处理 Blob 和 Clob 类型数据
12.9 控制事务
12.9.1 事务的概念
12.9.2 声明事务边界的概念
12.9.3 在 mysql.exe 程序中声明事务
12.9.4 通过 JDBC API 声明事务边界
12.9.5 保存点
12.9.6 批量更新
12.9.7 设置事务隔离级别
12.10 数据库连接池
12.10.1 创建连接池
12.10.2 DataSource 数据源
12.11 小结
12.12 练习题
第 13 章 基于 MVC 和 RMI 的分布式应用
13.1 MVC 设计模式简介
13.2 store 应用简介
13.3 创建视图
13.4 创建控制器
13.5 创建模型
13.6 创建独立应用
13.7 创建分布式应用
13.8 小结
13.9 练习题
第 14 章 通过 JavaMail API 收发邮件
14.1 E-mail 协议简介
14.1.1 SMTP
14.1.2 POP3
14.1.3 接收邮件的新协议 IMAP
14.1.4 MIME 简介.
14.2 JavaMail API 简介
14.3 建立 JavaMail 应用程序的开发环境
14.3.1 获得 JavaMail API 的类库
14.3.2 安装和配置邮件服务器
14.4 创建 JavaMail 应用程序
14.5 身份验证
14.6 授权码验证
14.7 URLName 类
14.8 创建和读取复杂电子邮件
14.8.1 邮件地址
14.8.2 邮件头部
14.8.3 邮件标记
14.8.4 邮件正文
14.9 操纵邮件夹
14.10 小结
14.11 练习题
第 15 章 安全网络通信
15.1 SSL 简介
15.1.1 加密通信
15.1.2 安全证书
15.1.3 SSL 握手
15.1.4 创建自我签名的安全证书
15.2 JSSE 简介
15.2.1 KeyStore、KeyManager 与 TrustManager 类
15.2.2 SSLContext 类
15.2.3 SSLServerSocketFactory 类
15.2.4 SSLSocketFactory 类
15.2.5 SSLSocket 类
15.2.6 SSLServerSocket 类
15.2.7 SSLEngine 类
15.3 创建基于 SSL 的安全服务器和安全客户
15.4 小结
15.5 练习题
第 16 章 XML 数据处理
16.1 用 DOM 处理 XML 文档
16.2 用 SAX 处理 XML 文档
16.2.1 创建 XML 文档的具体处理类 CustomerHandler
16.2.2 创建 XML 文档的解析类 SaxDemo
16.3 用 JDOM 处理 XML 文档
16.4 用 DOM4J 处理 XML 文档
16.5 Java 对象的 XML 序列化和反序列化
16.6 小结
16.7 练习题
第 17 章 用 Axis 发布 Web 服务
17.1 SOAP 简介
17.2 建立 Apache Axis 环境
17.3 在 Tomcat 上发布 Apache-Axis Web 应用
17.4 创建 SOAP 服务
17.4.1 创建提供 SOAP 服务的 Java 类
17.4.2 创建 SOAP 服务的发布描述文件
17.5 发布和管理 SOAP 服务
17.5.1 发布 SOAP 服务
17.5.2 管理 SOAP 服务
17.6 创建和运行 SOAP 客户程序
17.7 小结
17.8 练习题
第 18 章 用 Spring 整合 CXF 发布 Web 服务
18.1 创建 Web 服务接口和实现类
18.2 在 Spring 配置文件中配置 Web 服务
18.3 在 web.xml 配置文件中配置 Spring 和 CXF
18.4 在 Tomcat 中发布 Web 服务
18.5 创建和运行客户程序
18.6 小结
18.7 练习题
附录 A 本书范例的运行方法
A.1 本书所用软件的下载地址
A.2 部分软件的安装
A.2.1 安装 JDK
A.2.2 安装 ANT
A.2.3 安装 Tomcat
A.3 编译源程序
A.4 运行客户/服务器程序
A.5 处理编译和运行错误
您没有填写内容,默认好评
2020-04-04 15:53:25
好就记得记得记得就记得匠心独具记得记得贝贝血宝生生世世还是实话实说经济学家自己实话实说忽闪忽闪山山水水
2020-03-26 21:18:11
书质量很好啊,印刷非常清晰。
2020-03-25 21:19:19