Servlet和JSP学习总结(二)--Servlet接口

Servlet API概览

Servlet API有以下4个包:

  • javax.servlet,其中包含Servlet和Servlet容器之间契约的类和接口。
  • javax.servlet.http,其中包含定义HTTP Servlet(采用了HTTP协议的Servlet)和Servlet容器之间契约的类和接口。
  • javax.servlet.annotation,其中包含标注Servlet、Filter、Listener的标注。它还为被标注元件定义元数据。
  • javax.servlet.descriptor,其中包含提供程序化登录web应用程序的配置信息的类型。
    下图展示了javax.servlet中的主要类型
Servlet和JSP学习总结(二)--Servlet接口_第1张图片
javax.servlet中的主要类型

Servlet技术的核心是Servlet接口,所有Servlet类都必须直接或间接实现它。Servlet接口定义了Servlet与Servlet容器之间的契约。这个契约归结起来就是,Servlet容器将 Servlet类载入内存,并在Servlet实例上调用具体的方法。在一个应用程序中,每种Servlet类型只能有一个实例。

用户请求致使Servlet容器调用Servlet的Service方法,并传入一个ServletRequest实例和一个ServletResponse实例。ServletRequest中封装了当前的HTTP请求,因此,Servlet开发人员不必解析和操作原始的HTTP数据。ServletResponse表示当前用户的HTTP响应,使得将响应发回给用户变得十分容易。

对于每一个应用程序,Servlet容器还会创建一个ServletContext实例。这个对象中封装了上下文(应用程序)的环境详情。每个上下文只有一个ServletContext。每个Servlet实例也都有一个封装Servlet配置的ServletConfig。

Servlet接口

Servlet接口中定义了init、service、destory、getServletInfo和getServletConfig这五个方法。其中init、service和destory方法是生命周期方法,Servlet容器根据以下规则调用这3个方法:

  • init:当该Servlet第一次被请求时,Servlet容器会调用这个方法。这个方法在后续请求中不会再被调用。我们可以利用这个方法执行相应初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig(关于ServletConfig的内容会在后面讲到)。
  • service:每当请求Servlet时,Servlet容器就会调用这个方法。编写代码时,假设Servlet要在这里被请求。第一次请求Servlet时,Servlet容器调用init方法和Service方法。后续的请求将只调用Service方法。
  • destory:当要销毁Servlet时,Servlet容器就会调用这个方法。当要卸载应用程序,或者当要关闭Servlet容器时,就会发生这种情况。一般会在这个方法中编写清除代码。

Servlet中的另外两个方法是非生命周期方法,即getServletInfo和getServletConfig:

  • getServletInfo:这个方法会返回Servlet的描述。你可以返回有用或为null的任意字符串。
  • getServletConfig:这个方法会返回由Servlet容器传给init方法的ServletConfig。

下一篇:Servlet和JSP学习总结(三)--编写第一个Servlet

你可能感兴趣的:(Servlet和JSP学习总结(二)--Servlet接口)