第243集:手写Web服务器。
手动编写Web服务器,开始了。大家好,本节课我们将开始手动编写Web服务器,而非简单地分析和使用他人的服务器。我们编写Web服务器的主要目的是承上启下,总结Java初级知识,并为后续的外部开发和框架打下基础。
可以说,只要我们成功地手动编写了Web服务器,就能够理清外部开发和框架的脉络,从而轻松掌握后续的内容,实现四两拨千斤的效果。
还记得我之前提到的二八法则吗?只需掌握了其中的20%知识,其他80%的知识就可以触类旁通了。因此,我强烈建议大家,尽管这部分内容不属于课程内容,属于扩展知识,但仍建议大家手动编写。手动编写五到十遍,认真理解代码,不要忘记。
在手动编写Web服务器时,我们需要使用已经学习的Java初级知识,包括容器、I/O、多线程、网络编程和最重要的面向对象知识。同时,我们还需要使用一些未讲解的知识,如反射、插拔、解析、HTTP和HTML,这些知识将用于快速构建Web服务器。
可以说,没有Web服务器就没有互联网,有了Web服务器就有了互联网的日常活动。上网、打开手机或网站,都需要用到Web服务器。Web服务器之前也简单地讨论过,如上京东或淘宝,或在前台甚至上万台服务器上为我们提供服务。
客户打开页面请求页面,服务器需要响应内容。注意,这里有两个动词:请求和响应。请求和响应是日常生活中常见的行为。例如,别人打电话给你爸爸要生活费,爸爸给你一千块钱,然后爸爸说没有,然后爸爸给你一百块钱。爸爸说有了,给你两百块钱。
这就是请求和响应。响应的内容是根据每个外部请求动态生成的,而不是静态生成的。
因此,我们需要创建动态Web服务器,而非静态Web服务器。静态Web服务器通常用于缓存资源,而动态Web服务器则可以动态生成内容。因此,我们需要在内部启动多个线程来生成不同的内容,因此这部分内容将涉及多线程层。
同时,请求和响应都是基于互联网的,都是基于ITCO协议的。ITCO协议是应用层协议,之前我们学习了传输层的TCP和UDP协议,这些协议是建立在IP协议基础上的应用层协议。日常的互联网和物联网活动都需要使用Web服务器。随着互联网的不断发展,服务器的职责变得越来越复杂,不再只是单一的一台设备。现在的服务器通常由多台设备组成,它们各自承担不同的职责。例如,有数据库服务器、缓存服务器、外部服务器等,这些设备需要组合在一起,共同为用户提供服务。因此,这个服务器不再是单一的设备,而是由多种设备组成的整体。在这个整体中,不同的设备扮演着不同的角色,互相协作,为用户提供服务。
这里主要关注的是外部服务器的实现,外部服务器主要是响应客户的请求,并提供相应的内容。而不是存储数据或提高性能等。因此,需要编写一个基于请求响应式的外部服务器,需要掌握以下知识:面向对象、容器、I/O、多线程、网络编程、ASUEL解析、反射、HTMLElement、DOM、JavaScript等。现在,让我们开始逐步实现这些功能。当然,在实现这些功能之前,我们需要先掌握这些知识,才能进行下一步的开发。