Servlet 生命周期

Posted 岁月静好--lyr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet 生命周期相关的知识,希望对你有一定的参考价值。

一、servlet的生命周期是什么?

  servlet的生命周期分为三个阶段:

  1.初始化阶段:调用 init() 方法。

  2.响应用户请求阶段:调用service() 方法。

  3.终止阶段:调用destory() 方法。

二、servlet的工作原理是什么?

  1.servlet接受和响应用户请求的过程。

  servlet接受用户的请求。

  servlet调用service()方法,service()方法中对请求方式进行匹配,选择调用doPost方法还是doGet方法。

  进入doPost方法或者doGet方法调用业务逻辑层的方法,实现对客户的响应。

  2.接口调用

  首先,用户自定义的servlet必须要实现Servlet接口。因为Servlet接口中定义了五个方法,涉及到了servlet的生命周期。分别是init(),service(),destory().

  其次,GenericServlet实现了Servlet接口,HttpServlet继承于GenericServlet。

  再次,GenericServlet是一个通用的,不特定于任何协议的Servlet. HttpServlet是特定于HTTP协议的类。

  并且GenericServlet和Servlet接口中并没有定义dopost方法和doget方法,HttpServlet定义了这些方法。

  因此,我们用户自定义的servlet只需要继承HttpServlet即可。

  3.重写dopost和doget

  HttpServlet实现了servlet接口中的service方法,将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。

  HttpServlet本身定义的doGet,doPost方法,都是返回error信息。因此用户自定义的servlet 方法都需要重写dopost和doget方法。

三、初始化阶段:

  servlet容器装载servlet。

  servlet容器装载servlet之后,创建一个servlet实例,调用servlet的init() 方法进行初始化。

  注:servlet容器装载servlet的情况,有以下三种:

  情况1:servelet容器自动装载某些servlet。实现自动装载,只需要在web.xml文件中的<Servlet></servlet>中间添加如下代码:<loadon - startup>1</loadon - startup>

  情况2:Servlet容器启动后,客户首次向servlet发送请求。

  情况3:Servlet类文件被更新后,重新装载servlet。

  在Servlet的整个生命周期内,init()方法只被调用一次。

四、响应阶段:

  1.对于到达servlet的请求,servlet容器会创建特定于这个请求的servletRequest对象和responseRquest对象。servletRequest封装了用户的请求信息。

  2.servlet 调用service方法 : public void service(ServletRequest req,ServletResponse res).

    将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。

    并调用自己的service方法调相应的dopost方法或者doget方法。

  3.处理完请求之后,通过ServletResponse对象向客户返回响应信息。

五、终止阶段:

  当Tomcat关闭时候,servlet容器会调用destroy方法,释放其占用的资源。

以上是关于Servlet 生命周期的主要内容,如果未能解决你的问题,请参考以下文章

学亮IT手记Servlet的生命周期

servlet的生命周期,啥情况下调用doGet()和doPost()?

servlet 生命周期和过滤器生命周期之间的区别

JSP 生命周期

JSP生命周期

Servlet编程:Servlet的生命周期