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方法,释放其占用的资源。

  • 相关阅读:
    C++ 的那些坑 (Day 0)
    LeetCode Search a 2D Matrix II
    最大子序列和问题的解(共4种,层层推进)
    如何编译文件(gcc + nasm)
    os如何处理键盘的所有按键,显示or不显示,显示是如何显示
    汇编操作显存
    diy文件系统上创建文件的流程
    在diy的文件系统上创建文件的流程
    建立文件系统
    快速选择
  • 原文地址:https://www.cnblogs.com/lyr2015/p/6817232.html
Copyright © 2011-2022 走看看