Web应用程序Servlet,和容器Servlet Container的关系

Reference:
servlet的本质是什么,它是如何工作的?
Web容器、服务器、容器的理解总结

Servlet

servlet接口定义的是一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),
也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:你初始化时要做什么,你销毁时要做什么,你接受到请求时要做什么
作者:柳树
链接:https://www.zhihu.com/question/21416727/answer/339012081
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单来说,在接受到请求后,Servlet负责考虑:

  1. 需要对请求(Request对象)进行什么处理
  2. 需要返回什么响应(Response对象)

而请求则来自于Servlet容器(Servlet Container)
而Servlet需要部署在容器中才能生效

Servlet Container

那请求怎么来到servlet呢?答案是servlet容器,比如我们最常用的tomcat,同样,你可以随便谷歌一个servlet的hello world教程,里面肯定会让你把servlet部署到一个容器中,不然你的servlet压根不会起作用。
tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。
作者:柳树
链接:https://www.zhihu.com/question/21416727/answer/339012081
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Servlet容器(比如Tomcat)的职责:

  1. 监听端口,接收从客户端传来的请求,并生成Request对象
  2. 根据请求的报头、url等信息,和配置文件的描述,选择指定的servlet,并调用该servlet中的对应方法处理请求(方法中接收Request对象作为参数)
  3. 得到servlet方法中返回的Response对象,并通过网络返回给库客户端

你可能感兴趣的:(web理论)