tomcat 从客户端发送请求到接收到响应的流程
(1)客户端发送请求----该请求会首先到达Tomcat内部的web服务器。
(2)Tomcat内部服务器接收到请求之后会将请求转化给Servlet容器。
(3)Servlet容器接收到请求之后会加载Servlet并产生Sevlet实例,产生Servlet实例后会向其传递表示请求的对象(HttpServletRequest)和响应的对象(HttpServletResponse),之后Servlet实例通过请求对象得到客户端的请求信息并进行相应的处理。
(4)在Servlet请求处理完成之后有可能会将请求传递给其他的servlet进行处理。
(5)在全部请求都处理完成后通过响应对象返回给客户端浏览器。

servlet的执行流程
(1)当Servlet被装载并实例化之后,容器会首先调用init()方法对Servlet进行初始化。只有在init()方法调用成功之后,Servlet才处于服务状态,接收客户端的请求并进行处理。在Servlet的整个生命周期中,init()方法只会被调用一次。且初始化的时候,有参的init方法最先被调用。
(2)当Servlet初始化完成之后,就会调用service方法对客户端的请求进行处理。service方法在Servlet的生命周期中会被调用多次,具体次数取决于请求次数。
(3)在容器销毁Servlet之前,会调用destroy方法。destroy方法在Servlet的整个生命周期中也只会被调用一次。
【值得注意的一点是若需要重写init方法,则推荐重写无参的init方法,无参的init方法实际上不需要手动调用父类的无参init方法(super.init()), 打开父类的有参init方法实现可以看到该方法显式地调用了无参的init方法】

servlet注册格式(web.xml):
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.devsong.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
servlet-mapping 元素: 映射servlet的外部访问路径,其子元素servlet-name与servlet注册时一致, url-pattern: 对外访问路径。
若发现问题或者您有不同见解,欢迎给我留言!