@作者博客
Servlet生命周期和工作原理
分为三个阶段
初始化阶段 调用init()方法
响应客户请求阶段 调用service()方法
终止阶段 调用destroy()方法 (抵死囧应)
*记住这一点 : Servlet 加载--->实例化--->服务--->销毁。
初始化阶段 init()
- 在Servlet的生命周期中,仅执行一次init()方法
- 它是在服务器载入Servlet时执行的,负责初始化Servlet对象
核心: service()
它是Servlet的核心,负责响应客户的请求,每当一个客户请求一个HTTPServlet对象的时候,该对象就会调用Service()方法.而且传递给这个方法一个请求(ServletRequset)对象和一个响应(ServletResponse)对象作为初始.默认是调用Http请求响应Do功能
默认情况下,当客户第一次请求访问Servlet时,WEB容器就会创建Servlet的实例
当web.xml文件中如果<servlet>元素中指定了<load-on-startup>子元素时,Servlet容器在启动web服务器时,将按照顺序创建并初始化Servlet对象。
Destory()
- 仅执行一次,在服务器停止的时候.
- 当Servlet对象退出生命周期时,负责释放占用的资源.
- 当WEB应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet新实例时,Servlet容器会先调用Servlet的destroy()方法,在destroy()方法中可以释放掉Servlet所占用的资源。
通俗一点说 工作原理
首先客户发送一个请求,Servlet是调用service()方法对请求进行响应
service()方法中对请求的方式进行了匹配,选择调用 doGet,doPost等方法,然后再进入对应的方法,调用逻辑层的方法,实现对客户端的响应.
扩展
Servlet与JSP的比较:
都可以生成动态网页。
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
思维导图如下: