Web 服务器的实现原理

 

Web应用常称为B/S(Browser/Server)架构,但其实Web应用一样是C/S(Client/Server)结构的应用,只是这种应用的服务器是Web服务器,客户端是浏览器。

 

对于大部分浏览器它通常负责完成三件事情:

(1)向远程服务器发送请求。

(2)读取远程服务器返回的字符串数据。

(3)负责根据字符串数据渲染出一个丰富多彩的页面。

 

Web服务器则负责接收客户端请求,每当接收到客户端连接请求后,Web服务器应当使用单独的线程为该客户端提供服务:接收请求数据、返回响应数据。

 

 

B/S架构总是由客户端发送请求,服务器接收到请求后返回响应数据,所以也将这种架构称作“请求/响应”架构。对这种机制进行归纳,对于每次客户端请求而言,Web服务器大致需要完成如下几个步骤:

 

1、启动单独的线程。

2、使用I/O流读取用户的请求数据。

3、从请求数据中解析参数。

4、处理用户请求。

5、生成相应数据。

6、使用I/O流向用户端发送请求数据。

 

在上面6个步骤中,第1、2和6步是通用的,可以由Web服务器来完成,但第3、4和5步则存在差异:因为不同的请求里包含的请求参数不同,处理用户请求的方式也不同,所生成的响应自然也不同。那么Web服务器到底是如何执行3、4和5步呢?

 

实际上,在访问JSP页面时,Web服务器会调用Servlet的_jspService()方法来完成第3、4和5步,当我们编写JSP页面时,页面里的静态内容、JSP脚本都会转换成_jspService()方法的执行代码,这些执行代码负责完成解析参数、处理请求、生成响应等业务功能,而Web服务器则负责完成多线程、网络通信等底层功能。

 

Web服务器在执行了第3步解析到用户的请求参数之后,将需要通过这些请求参数来创建HttpServletRequest、HttpServletResponse等对象,作为调用Service()方法的参数,实际上一个Web服务器必须为Servlet API中绝大部分接口提供实现类。

 

相关推荐