servlet容器
 
servlet没有main()方法。它们受控于另一个java应用,这个java应用研究称为容器(Container)。
 
web服务器应用得到一个指向servlet的请求,服务器不会把这个请求交个servlet本身,而是交给servlet容器。由容器向servlet提供http请求和响应,由容器调用servlet的方法(如doPost()、doGet())。
 
容器如何处理请求(摘自head first servlet & jsp P42)
 
  1. 用户点击一个链接,指向一个servlet而不是一个静态页面。
  2. 容器“看出来”这个请求要的是一个servlet,所以容器创建两个对象:HttpSerlvetResponse、HttpServletRequest
  3. 容器根据请求中的URL找到正确的servlet,为这个请求创建或分配一个线程,并把请求和响应对象传递给这个servlet线程。
  4. 容器调用servlet的service()方法。根据请求的不同类型,service方法会调用doGet()或doPost()方法。
  5. doGet()或doPost()方法生成动态页面,并把这个页面“塞到”响应对象里。要记住,容器还有响应对象的一个引用!
  6. 线程结束,容器把响应对象转换为一佧HTTP响应,把它发回给客户,然后删除请求和响应对象。
 任务web服务器 容器 servlet 
 创建请求和响应对象  yes 
 调用service()方法  yes 
 开始一个新线程处理请求  yes 
 把响应对象转换为一个HTTP响应  yes 
 了解HTTP yes  
 把HTML增加到响应对象   yes
 有响应对象的一个引用  yes 
 在DD中查找URL  yes 
 删除请求和响应对象  yes 
 协调生成动态内容 yes yes 
 管理生命周期  yes 
 名字与DD中的<servlet-class>匹配   yes
 
容器为Web应用提供了通信支持、生命周期管理、多线程支持、声明方式的安全、还支持JSP,这样你就能全神贯注地开发你自己的业务逻辑。