1.Tomcat Server处理一个HTTP请求的过程
1
、用户点击网页内容,请求被发送到本机端口
8080
,被在那里监听的Coyote HTTP/
1.1
Connector获得。
2
、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
3
、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
4
、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
5
、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
6
、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
7
、Context把执行完之后的HttpServletResponse对象返回给Host。
8
、Host把HttpServletResponse对象返回给Engine。
9
、Engine把HttpServletResponse对象返回Connector。
10
、Connector把HttpServletResponse对象返回给客户Browser
2.WEB服务器
web服务器是可以向发出请求的浏览器提供文档的程序
它是一种被动程序,只有当Internet上运行在其他电脑上的浏览器发出请求时,
服务器才会响应,WEB服务器主要功能是提供网上信息浏览服务
常用的web服务器有两个 微软的信息服务器IIS,Apache的Tomcat
3.Web服务器工作原理图解
---------------------
首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着**(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
(1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。(2) 浏览器与对端服务程序建立TCP连接。(3) 浏览器将用户的事件按照HTTP协议格式**打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。(4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到对端服务程序。(5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。(6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。(7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。(8) 按照HTTP协议格式将(7)中的数据打包(9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。(10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。(11) 浏览器将HTML文件展示在页面以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个接收数据 2. 发送数据 3. 数据处理
而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据高级的服务器无非就是将这三个部分更加细致的设计了。