赞
踩
Web应用服务器的核心,是对Http协议的实现!
有高速公路的存在,才能有收费站的存在!
HTTP 是基于 TCP/IP 协议的 应用层协议 。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用 80 端口。
所有类型的数据,均可采用Http传输。例如:图片、html网页、视频mp4、音频mp3、pdf、zip...
如图,HTTP基本工作流程:
用户通过浏览器访问网址,或点击链接。接着,浏览器获取发送请求事件
浏览器向服务端发出TCP连接请求
服务程序接受浏览器连接请求,经过TCP三次握手建立连接
浏览器将请求数据打包【HTTP协议格式数据包】
浏览器将该数据包推入网络。数据包经过网络传输,最终达到端服务程序。
服务端拿到数据包后,以HTTP协议格式解包,获取到客户端的意图。
得知客户端意图后进行处理。比如:提供静态文件或者调用服务端程序获得动态结果。
服务器将响应结果(可能是HTML或图片)打包【HTTP协议格式数据包】
服务器将响应数据包推入网络,数据包经过网络传输最终到达浏览器
浏览器拿到数据包后,以HTTP协议的格式解包,然后解析数据,假设这里的数据是HTML。浏览器将HTML文件展示在页面上
主要是接受连接、解析请求数据、处理请求和发送响应这几个步骤【工作流程中的 3 、 6 、 7 、 8 、 9 步骤】
也就是说,tomcat可以找到部署的应用,对应的资源,然后返回给浏览器。那就说明tomcat能解析我们的java应用,并能调到对应的java程序。
这里说的java程序,我们要分清。一般的只有main方法的程序,我们是无法调到。那怎么样的java程序,我们是可以调用到的呢?这里可能大部分人,都没有考虑过这个问题吧?
这里外部能调到的java程序,其实就是servlet java程序。这个希望大家能够理解。那我们讲一下servlet喽!!!
Servlet (Server Applet),全称 Java Servlet 。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情 况下Servlet只用来扩展基于HTTP协议的Web服务器。
说的简单点:通过Java编写的服务器动态资源的Web应用程序,也可以理解为Java中的一个接口。
Tomcat内部对网络请求是基于Servlet实现的。
各司其职
浏览器发给服务端的是一个HTTP格式的请求,HTTP服务器收到这个请求后,需要调用服务端程序来处理,所谓的服务端程序就是你写的Java类,一般来说不同的请求需要由不同的Java类来处理。
左边:表示HTTP服务器直接调用具体业务类,它们是紧耦合的。
右边:HTTP服务器不直接调用业务类,而是把请求交给容器来处理,容器通过Servlet接口调用业务类。 业务类和HTTP服务器是松耦合的。
由此可见,servlet,其实在我们的java web编程中,担任的角色是很重要的。一般上很多的框架,底层其实都是对servlet的封装,例如:springmvc,struts2等。。。
可能大部分的程序员都直接从springmvc,struts2学习,对servlet的理解并不深入。但是servlet是底层的东西,这个我们更应该去深入的学习一下原生的servlet编程。
那接下来,我们讲一下Servlet容器工作流程!!!
Web应用服务器的架构设计基本原理
基于Servlet规范实现
HTTP服务器不直接调用Servlet【为了解耦】,而是把请求交给Servlet容器来处理, 那Servlet容器又是 怎么工作的呢?
当客户请求某个资源时:
HTTP服务器会用一个ServletRequest对象把客户的请求信息封装起来,然后调用Servlet容器的service()方法
Servlet容器根据请求的URL和Servlet的映射关系,找到相应的Servlet
请求处理完毕,Servlet容器把ServletResponse对象返回给HTTP服务器,HTTP服务器会把响应发送给客户端
总结:
应用服务器设计思想的核心,是对Http协议的实现,而tomcat服务器,也只是其中的一种实现而已。那tomcat的内部对网络请求是基于Servlet实现的,Servlet的工作流程,其实就是tomcat处理业务请求的主要核心思想了。
转自:https://juejin.cn/post/7130243964397060104
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。