Servlet实现方式及其生命周期

来源:互联网 发布:淘宝双12活动报名入口 编辑:程序博客网 时间:2024/05/22 01:49

在Servlet开发中,实现servlet有三种方式:1.实现javax.servlet.Servlet接口  2.继承javax.servlet.GenericServlet   3.继承javax.servlet.HttpServlet,其层次关系为:

一、servlet接口如下所示:

package javax.servlet;public interface Servlet  {        void init(javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException;        javax.servlet.ServletConfig getServletConfig();        void service(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws javax.servlet.ServletException, java.io.IOException;        java.lang.String getServletInfo();        void destroy();}

其主要方法描述如下:

init:在servlet加载并实例化后首先调用,在servlet生命期间仅仅调用一次,所以我们可以再其中做一些初始化的工作,例如加载数据库驱动等操作

另外如果我们的servlet采用的是直接实现javax.servelet.Servlet接口的话,则需要定义一个变量来保存ServletConfig,以便在getServletConfig中使用

service: 每次浏览器调用服务的响应方法,一次调用执行一次,我们主要响应业务都在其中实现

destroy:在web服务器关闭或者重新加载web应用的时候才执行一次,用以释放一些相关资源,也是在其生命周期仅仅执行一次

getServletConfig:返回在init方法中保存的servletConfig变量


二 、GenericServlet类实现了javax.servlet.Servlet接口,实现了一些常用的功能,如上面提到在init方法中保存ServletConfig变量及在getServletConfig方法中返回等,如果我们从GenericServlet继承的话,仅仅需要重载其service方法

另外如果重载init做一些初始化的操作,则必须调用基类的init(super.init(serviceConfig);),否则不会保存servletConfig,在调用getServletConfig的时候返回null

三、HttpServlet根据http请求特点细化了service操作,也就是说在service方法中会根据http请求类型(get,post等)分别调用doGet,doPost等方法

另外同二如果我们重载init,一定要调用super.init


原创粉丝点击