流程
<p style="margin: 10px auto; color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">1、客户发出请求—>Web 服务器转发到Web容器Tomcat;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">2、Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">3、从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把2创建的两个对象传递给该线程;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">4、Tomcat调用Servlet的service()方法,根据请求参数的不同调用doGet()或者doPost()方法;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">5、假设是HTTP GET请求,doGet()方法生成静态页面,并组合到响应对象里;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">6、Servlet线程结束,Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。</span><br></p>
生命周期
<span style="color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);">init方法,负责初始化Servlet对象</span><br style="color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);"><span style="color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);">service方法,负责相应客户的请求</span><br style="color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);"><span style="color: rgb(51, 51, 51); font-family: Verdana, Arial, sans-serif, "Lucida Grande"; font-size: 13.3333px; text-align: left; background-color: rgb(214, 211, 214);">destory方法,当Servlet对象退出声明周期时,负责释放占有的资源</span>