首页 servlet

Servlet

定义所有servlet必须实现的方法

servlet运行在Web服务器中的小型Java程序。

通过HTTP来接收和响应请求

实现此接口可以通过extend另外两个类来实现:javax.servlet.GenericServletjavax.servlet.http.Httpservlet来实现,分别是GenericServletHttpServlet

接口定义了初始化,处理服务请求,从服务器中删除的方法。

生命周期为:

  1. 构建servlet,使用init方法初始化
  2. service方法
  3. servlet退出服务,然后通过destroy方法将其销毁,最后通过垃圾回收机制。

除了生命周期,该接口还提供了servlet可用于获取任何启动信息的getServletConfig方法,和返回自身基本信息的getServletInfo方法

// 源码:
package javax.servlet;

import java.io.IOException;

public interface Servlet {
    void init(ServletConfig config) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException;

    java.lang.String getServletInfo();

    void destroy();
}
init

在实例化servlet后,servlet容器调用一次init方法,init必须成功完成,完成之后才能接收任何请求。在init执行过程中,servlet容器无法将servlet放入service,抛出错误类型为ServletException,在Web服务器创建阶段不会执行结束。

参数:

Config:一个包含Servlet配置和初始化参数的ServletConfig对象。

抛出:

ServletException:如果发生了干扰正常操作的异常。

getServletConfig

返回一个ServletConfig对象,该对象包含本servlet的初始化和启动参数,返回的ServletConfig对象就是传递给init的参数。

此接口的实现负责存储`ServletConfig对象

返回值:

ServletConfig:一个包含Servlet配置和初始化参数的ServletConfig对象。

service

由servlet容器调用,仅在init方法完成之后才能调用此方法。serclet通常在多线程servlet容器中运行,该容器可以同时处理多个请求,所有对多线程编程要进行运用。

参数:

req:一个包含客户端请求的ServletRequest对象。

res:一个包含Servlet响应的ServletResponse对象。

抛出:

ServletException:如果发生了干扰servlet操作的异常。

java.io.IOException:如果发生输入或输出异常。

getServletInfo

返回有关servlet的信息,例如作者,版本和版权,返回的字符串是纯文本形式,而不是任何形式的标记(HTML或XML)

返回值:

包含servlet信息的String

destroy

servlet容器指示该servlet准备退出服务。方法只能在servlet中的service所有线程都已经退出或者超过时间之后,才能调用,servlet容器调用此方法之后,不能再调用service方法。

此方法使`servlet清楚所有持有的所有资源,例如内存,线程等

ServletConfig

一个servlet容器用来在初始化期间将信息传递给servletservlet配置对象

// 源码:
package javax.servlet;

import java.util.Enumeration;

public interface ServletConfig {
    java.lang.String getServletName();

    ServletContext getServletContext();

    java.lang.String getInitParameter(java.lang.String name);

    java.util.Enumeration<java.lang.String> getInitParameterNames();
}
getServletName

返回该servlet的名称,名称可以通过服务器管理来提供,或者Web应用程序部署来分配,对于未注册的servlet,就是类名。

返回值:

servlet的名称

getServletContext

返回对调用方正在执行的servletcontext的应用

返回值:

一个servletcontext对象,调用方可以使用它与serclet容器进行交互

getInitParameter

返回一个字符串,其中包含命名的初始化参数的值,如果参数不存在,返回null。

参数:

name:一个字符串,指定初始化参数的名称

返回值:

包含初始化参数值的字符串

getInitParameterNames

String对象的枚举的行书返回初始化参数的名称,如果没有初始化参数,返回一个空的枚举

返回值:

包含servlet初始化参数名称的string对象的枚举

Servlet官方文档:https://tomcat.apache.org/tomcat-8.5-doc/servletapi/index.html




文章评论

目录