1.2 Servlet
Servlet
接口中定义了以下5个方法:
方法 | 描述 |
---|---|
void init(ServletConfig config) throws ServletException |
初始化方法 |
void service(ServletRequest request,ServletResponse response) throws ServletException, java.io.IOException |
响应请求方法 |
void destroy() |
销毁Servlet |
java.lang.String getServletInfo() |
返回Servlet的描述信息 |
ServletConfig getServletConfig() |
返回由Servlet 容器传给init 方法的ServletConfig 对象 |
注意,编写Java
方法签名时,如果方法的返回值类型或者抛出的异常类型和定义这个方法的类不再同一个包下,则返回值类型或异常类型要使用类全名。 正因为如此,在service
方法的签名中,由于javax.servlet.ServletException
这个类与当前类Servlet
位于同一个包中,所以ServletException
,可以不用写类全名,而java.io.Exception
和当前类javax.servlet.Servlet
,不再同一个包下,所以Exception
类要写完整的名称。
生命周期方法
init
、service
和destroy
是生命周期方法。Servlet容器根据以下规则调用这3个方法:
init
方法,当该Servlet
第一次被请求时,Servlet
容器会调用这个方法。这个方法只调用这一次,在后续请求中将不会再被调用。我们可以利用这个方法执行相应的初始化工作。 调用这个方法时,Servlet
容器会传入一个ServletConfig
对象的引用作为init
方法的参数。一般来说,你会在init
方法体中把ServletConfig
对象引用赋给一个类变量。service
方法,每当请求Servlet
时,Servlet
容器就会调用这个service
方法。当第一次请求Servlet
时,Servlet
容器要同时调用init
方法和service
方法。后续的请求将只调用service
方法。destroy
方法,当要销毁Servlet
时,Servlet
容器就会调用这个方法。当要卸载应用程序,或者当要关闭Servlet
容器时,就会发生这种情况。一般会在这个方法中编写清除代码。
非生命周期方法
Servlet
中的另外两个方法是非生命周期方法
,即 getServletInfo
和getServletConfig
方法:
getServletInfo
方法,这个方法会返回Servlet
的描述。你可以返回有用的或者为null
的任意字符串。getServletConfig
方法,这个方法会返回由Servlet
容器传给init
方法的ServletConfig
对象。但是,为了让getServletConfig
方法返回一个非null
值,必须将传给init
方法的ServletConfig
赋给一个类变量。ServletConfig
将在本章的1.6节中讲解。
注意线程安全性。Servlet
实例会被一个应用程序中的所有用户共享,因此不建议使用类级变量,除非它们是只读的,或者是java.util.concurrent.atomic
包的成员。 下一节“编写基础的Servlet
应用程序”将介绍如何编写Servlet
实现。
原文链接: 1.2 Servlet