在eclipse中创建web项目时,会选择一个target runtime,意思就是在什么上面运行,也就是运行时的web容器。我们常用的Tomcat就是一种web容器。简单来说,web容器也就是servlet容器。主要有以下作用:

1.通信支持

通过web容器中的方法,只需简单的操作就能实现servlet与web服务器间的通信。而不需要自己创建socket,监听接口、新的流等一系列复杂的操作。Servlet容器包含在web服务器中,web服务器监听来自特定端口的HTTP请求,这个端口通常是80。当客户端(使用web浏览器的用户)发送一个HTTP请求时,Servlet容器会创建新的HttpServletRequest和HttpServletResponse对象,并且把它们传递给已经创建的Filter和URL模式与请求URL匹配的Servlet实例的方法,所有的这些都使用同一个线程。
request对象提供了获取HTTP请求的所有信息的入口,比如请求头和请求实体。response对象提供了控制和发送HTTP响应的便利方法,比如设置响应头和响应实体(通常是JSP生成的HTML内容)。当HTTP响应被提交并结束后,request和response对象都会被销毁。

2.控制servlet生命周期

如何加载类,实例化和初始化servlet,调用servlet方法,并使servlet实例能够被垃圾回收。有了容器,我们就不用花精力去考虑这些资源管理垃圾回收之类的事情。当Servlet容器启动时,它会部署并加载所有的web应用。当web应用被加载时,Servlet容器会一次性为每个应用创建Servlet上下文(ServletContext)并把它保存在内存里。Servlet容器会处理web应用的web.xml文件,并且一次性创建在web.xml里定义的Servlet、Filter和Listener,同样也会把它们保存在内存里。当Servlet容器关闭时,它会卸载所有的web应用和ServletContext,所有的Servlet、Filter和Listner实例都会被销毁。

3.多线程支持

为每个servlet请求创建一个线程,servlet运行完成后容器就会自动结束这个线程。

web容器处理http请求过程示意图如下:


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐