上篇文章大致介绍的请求的流转,本文主要是详细介绍一下容器处理请求的过程。

   第一步,用户点击一个链接指向一个servlet,而不是静态页面。

wKioL1ef-zWCNp0EAAD3gzI-uk0018.png

  第二步,容器可以分辨出请求指向servlet,所以容器会产生两个对象:

       1.HttpServletRequest

       2.HttpServletResponse

wKiom1ef-zWQ4hYLAAD25NjEfY4271.png

   第三步,容器对请求的URL根据配置找到对应的servlet,为这个请求创建或者分配一个线程,并将请求和响应对象传递给这个Servlet线程。

wKiom1ef-zaTuTFCAAFL4bSLKI8216.png

   第四步,容器会调用Servlet的service方法,根据请求的不同类型,service()方法会调用servlet的doPost()或者doGet()方法,对应页面form表单是post还是get数据。

wKioL1ef-zaA51SJAADdg2euqnk754.png

  第五步,doGet()或者doPost()生成的动态页面塞进响应中(容器持有响应对象的引用)

wKioL1ef-zejVZGKAAD3aebRhs0902.png

  第六步,线程结束,容器把响应转换为HTTP响应给客户,然后删除请求与响应对象。

wKiom1ef-zfxiM-LAAFaF3cLAXQ620.png