Servlet
定义所有servlet
必须实现的方法
servlet
运行在Web服务器中的小型Java程序。
通过HTTP
来接收和响应请求
实现此接口可以通过extend
另外两个类来实现:javax.servlet.GenericServlet
与javax.servlet.http.Httpservlet
来实现,分别是GenericServlet
与HttpServlet
接口定义了初始化,处理服务请求,从服务器中删除的方法。
生命周期为:
- 构建
servlet
,使用init方法初始化 service
方法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
容器用来在初始化期间将信息传递给servlet
的servlet
配置对象
// 源码:
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