web server 与 servlet container

看讲Servlet 与 JSP的书籍,谈到了这两个概念,现在还是有点模糊。
下面是我的理解,请大家指正。
web server 主要是处理服务器端与客户端之间的HTTP(或其他协议)的请求或应答。
servlet container将需要的JSP 和 servlet管理起来,在web server需要时调用它们。
tomcat 则是将两者的功能结合在一起了。
这样理解对么,请指正,谢谢

贴一点规范里的总结:

容器:

  • servlet engine
  • web server的扩展,用来提供servlet功能。

servlet是什么:
建议看看servlet的规范,servlet就是实现了特定java接口的类,由容器负责servlet的产生,如果有用户的请求映射到一个servlet,那么由容器负责产生或者用已经产生好的servlet来处理这个请求。

Tomcat:既可以单独做容器,也可以同时完成web server和容器的功能。

tomcat的web server功能,底层应该也是apache的核心,不过这部分没有仔细研究。

个人觉得学习容器和servlet一个比较好的办法是:在有一定基础之后看servlet的规范,很多书在这些问题上讲的并不清楚。

你把一个请求分成两部分来看:

网络通讯需要遵循http协议,所有请求都必须使用http协议来封装,web server在口子上应答http协议,把包给拆开,取出里面的东西交给jsp和servlet去处理;jsp和servlet负责对接收到的请求(web server解包后的数据)进行处理然后返回结果给web server,由web server再封装成http协议包发送出去。

打个比方说,web server就是好像是一个工厂的采购员和销售员,接收货物和发送货物都要经过他统一处理,收到原材料的时候,卸货、分类入库、交给使用的部门。然后他不负责采购来的原材料的加工处理。

原材料由jsp和servlet统一加工处理成产品,怎么生产怎么处理,生产什么样的产品,都是它们的事,但是它们不管原材料和包装销售.你可以在这里面自由编程生产你想要的产品。

要对外返回销售的时候,得有统一的包装部门统一包装好,发送货物处理。这个也是web server负责的。

也就是:
web server统一管理收原料,打包装发货物,jsp和servlet管加工管处理。

tomcat干的一个事就是把这整个工厂干的活都包了,从采购到加工到销售,他全会。
也就是上面两者的总和。

你的理解基本正确,你web server的意思应该是 http server
Tomcat就是在Apache HTTP Server的基础上添加了Servlet容器。