Servlet特性

1、什么是Servlet的生命周期

  容器如何创建Servlet对象、如何为Servlet对象分配资源、如何调用Servlet对象的方法来处理请求、以及如何销毁Servlet对象的整个过程

2、声明周期的四个阶段

  阶段一:实例化

    什么是实例化?

      容器调用Servlet的构造器,创建一个Servlet对象。

    什么时候实例化?

      情形一:开始容器里面没有Servlet,收到请求后创建Servlet对象

      情形二:容器启动之后就立即创建相应的实例

  阶段二:初始化

    什么是初始化?

      容器在创建好Servlet对象之后,会立即调用该对象的init方法。

      一般情况下,我们不会写init方法,因为GenericServlet已经提供了init方法的实现(将容器传递过来的ServletConfig对象保存下来,并且,提供了getServletConfig方法来获得ServletConfig对象)。

      init方法只会执行一次

      Servlet的初始化参数如何配置

        <init-param>

          <param-name>company</param-name>

          <param-name>北京达内</param-value>

        </init-param>

      如何读取Servlet的初始化参数?

        String ServletConfig.getInitParameter("company")

  阶段三:就绪

    容器收到请求之后调用Servlet对象的service()来处理请求

  阶段四:销毁

    容器依据自身的算法删除Servlet对象,删除前会调用destroy()

    只会执行一次

    可以override destroy方法来实现自己的处理逻辑

    应用程序卸载时一定会调用destroy方法

3、Servlet核心接口与类

  Servlet接口

  GenericServlet抽闲类

  HttpServlet抽象类

4、Servlet接口

  Servlet接口 主要包括

   1>init(ServletConfig config)方法

  2>service(ServletRequest req,ServletResponse res)方法

    ServletRequest是HttpServletRequest的父接口

    ServletResponse是HttpServletResponse的父接口

  3>destroy方法

5、Servlet核心类

  GenericServlet抽象类实现了servlet接口的部分方法(init和destroy方法)

  HttpServlet抽象类继承了GenericServlet实现了service方法

    查看GenericServlet中init方法源代码,init方法在service方法调用之前调用。容器会先创建ServletConfig对象,然后把config对象传给init。

    init()执行完后,ServletConfig对象消失,所以this.config=config可保存对象引用

    ServletConfig可以访问Servlet初始化的参数

6、什么是Servlet上下文

  容器启动之后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象,该对象就是Servlet上下文。

  特点:

    唯一性(一个Web应用对应一个servlet)

    一直存在(只要容器不关闭,应用没有被卸载删除,servlet上下文就一直存在)

7、如何获取Servlet上下文

  方式一:

    通过GenericServlet提供的 getServletContext()

  方式二:

    通过ServletConfig提供的 getServletContext()

  方式三

    通过HttpSession提供的 getServletContext()

  方式四:

    通过FilterConfig提供的 getServletContext()

8、Servlet上下文的作用及特点

  作用一

    使用setAttribute绑定数据

  作用二

    使用removeAttribute移除绑定数据

  作用三

    使用getAttribute获取绑定数据

  特点

    servlet上下文绑定的数据可以被整个应用上的所有组件共享,并且一直可以访问

你可能感兴趣的:(servlet)