zoukankan      html  css  js  c++  java
  • 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方法,释放其占用的资源。

  • 相关阅读:
    八数码难题 (codevs 1225)题解
    小木棍 (codevs 3498)题解
    sliding windows (poj 2823) 题解
    集合删数 (vijos 1545) 题解
    合并果子 (codevs 1063) 题解
    等价表达式 (codevs 1107)题解
    生理周期 (poj 1006) 题解
    区间 (vijos 1439) 题解
    区间覆盖问题 题解
    种树 (codevs 1653) 题解
  • 原文地址:https://www.cnblogs.com/lyr2015/p/6817232.html
Copyright © 2011-2022 走看看