在这份教程里,滇狐代领大家编写一个最简单,也可以说是简陋的 HTTP 服务器。请大家打开自己喜欢的编辑器或 Java 开发环境,随滇狐一步步开始操作。

1 最简单的多线程服务器

这一章里,我们编写了一个最简单的多线程网络服务器──回声服务器,演示了编写一个网络服务程序的基本流程,在接下来的章节中,我们会逐渐将这一框架扩展为一个完整的 HTTP 服务器。本章主要演示了面向对象分析与设计的基本方法。

2 解耦会话对象,脱离网络调试

如果每次调试程序都需要先启动程序,再开启一个 telnet 窗口,手工往窗口中输入冗长的 HTTP 请求,再辨认输出结果是否正确的话,这无论如何都不是一个好主意。在这一章里,我们把会话对象从 Socket 类中解耦出来,让之后的调试不再依赖网络环境。

本章简要讲解了“耦合度”的来源和降低耦合度的方法,并详细讲解了 Java 事件驱动模式的原理及设计方法,Callback 技巧在 Java 编程中的实现,interface 在 Java 编程中的应用,以及 Observer 模式、Template Method 模式在实际项目中的应用。

3 重构程序框架,提高模块可重用性

经过仔细观察我们会发现,我们之前编写的模块完全可以用于其它类型的服务器,并不局限于 HTTP 服务器。因此,这一章里,我们重构了之前得到的代码,得出一个相对通用的服务器框架,为将来的重用打下了基础。

本章主要讲述了“复制、粘贴、修改”方式重用代码的危害以及正确的代码重用方法,展示了一个简单的应用程序框架设计与实现方法,以及 Abstract Factory 模式在实际项目中的应用。

4 相对通用的配置文件读写模块

一个完整的服务器,需要有许多可以配置的项目,因此,编写一个配置文件读写模块是非常有必要的。这一章里,我们编写了一个最简陋的类 ini 格式配置文件读写模块,

本章主要展示了 Singleton 模式在实际项目中的应用。

5 完成简单 HTTP 服务器

经过前面几章的努力,我们已经完成了编写一个 HTTP 服务器所需要的各个部件。在这一章里,我们首先编写一个 HTTP 协议解析模块,然后将前面的各模块组装起来,最后得到一个完整的 HTTP 服务器。