servelet = server applet = java写的服务端程序,指代实现servlet接口的那些业务类
浏览器 (request)==>HTTP服务端
浏览器 <==(response)HTTP服务端
但是服务端数据越来越复杂,不再局限于传递静态资源与数据,但是我们业务数据不能与http服务器过于耦合,所以我们需要一个抽象层,将http和具体的业务隔离,从而这个抽象层需要规定一个标准的接口(做一个规范),所有业务需要实现这个接口才好对接,那么这个接口就是servlet。
浏览器 (request)==>HTTP服务端==>servlet业务层
浏览器 <==(response)HTTP服务端<==servlet业务层
Servlet容器就是用来管理和加载这些servlet类的,根据http请求找到对应的Servlet类这就是Servlet容器要做的事情。
我们然后将servlet容器再接偶出业务层,那么如下:
浏览器 (request)==>HTTP服务端==>Servlet容器==>业务实现
浏览器 <==(response)HTTP服务端<==Servlet容器<==业务层实现
3、how
(1)把请求和某个servlet对应关系也抽象出来,就是web.xml,这个配置文件告诉了Servlet容器对应关系即可,我们平台使用的war包就是业务和Servlet容器的业务解耦
(2)Servlet规范就是Servlet接口和Servlet容器处理对应关系、包括整体结构、命名等一整套就称为Servlet规范
(3) Web 容器其实就是 HTTP 服务器 + Servlet 容器,因为单单 Servlet 容器没有解析 HTTP 请求、通信等相关功能
我们从servelet这样一个简单例子理解中会发现:
计算机科学中的大多数复杂的问题都可以用一层层中间件的来解耦并加以实现
原文:https://blog.51cto.com/13238147/2662617