什么是servlet?
servlet本质是一个接口。但是通常来说servlet是指所有实现了servlet接口的实现类
每一个实现了servlet接口的类都需要实现这五个方法。其中最主要的三个方法是init() service()destroy()。init destroy是生命周期方法,service是处理请求时的方法。所有实现了servlet接口的类,或者说想处理网络请求的类都需要实现这三个方法,初始化时干什么,接收到服务干什么,销毁时干什么。servlet作为接口(规范),即使实现了它的类也并不能处理网络请求。因为servlet并没有main方法所以不能独立运行。
什么是servlet容器?
因为没有main,所以需要部署到servlet容器中,容器实例化和调用servlet方法。servlet接收网络请求并返回一个响应,容器把servlet挂载到http服务器上,生成动态网页
servlet的请求会先被http服务器(Apache)获取生成静态资源HTML,然后会被servlet容器捕获,servlet根据web.XML映射关系调用对应的servlet实现类,servlet将处理结果返回给容器,容器再通过http服务器响应给客户端。Tomcat Jetty JBoos都是容器
什么是web服务器?
Apache NGINX IIS 都是web服务器,这里的http服务器和web服务器应该是一回事。
可以看出web服务器是包含servlet容器的,容器内有servlet。
上述三者是如何配合工作的? 也就是说Servlet容器和Web服务器如何处理一个请求?
1,web服务器接收http请求。2,服务器转发给容器。3,容器去调用servlet,如果不存在就会检索所有的servlet,把对应的加载到容器内的地址空间中。4,容器初始化servlet。5,servlet的service()处理请求并生成响应。6,web服务器返回响应