SpringMVC之Servlet的生命周期和工作原理
# SpringMVC之Servlet的生命周期和工作原理
# 一、Servlet的生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程
# 1)客户端请求该 Servlet
# 2)加载 Servlet 类到内存并实例化
# 3)初始化阶段: 调用init()方法
在下列时刻Servlet容器装载Servlet:
- Servlet容器启动时自动1装载某些Servlet,实现它只需要在web.xml文件中的
<Servlet></Servlet>
之间添加如下代码
<loadon-startup>1</loadon-startup>
1
在Servlet容器启动后,客户首次向Servlet发送请求
Servlet类文件被更新后,重新装载Servlet Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的ini()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
# 4)响应客户请求阶段:调用service()方法
对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用 Servlet的service方法。service方法从ServletRequest对象获得客户请求信息,处理该请求,并通过 ServletResponse对象向客户返回响应信息。
# 5)终止阶段:调用destroy()方法
当WEB应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet新实例时,Servlet容器会先调用Servle的
destroy()
方法,在destroy()
方法中可以释放掉Servlet所占用的资源
# 二、Servlet的工作原理
工作流程说明:
- Web Client 向Servlet容器(Tomcat)发出Http请求
- Servlet容器接收Web Client的请求
- Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
- Servlet容器创建一个HttpResponse对象
- Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
- HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
- HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
- Servlet容器把HttpServlet的响应结果传给Web Client。