程由Servlet引擎服务器来管理,与传统的CGI为每个客户端启动一个进程相比较,效率要高得多。
Servlet的生命周期主要有下列三个过程组成:
(1) 初始化ServletaServlet第一次被请求加载时,服务器初始化这个Servlet,即创建一个Servlet对象,这个对象调用init方法完成必要的初始化
工作。
(2) 诞生的Servlet对象调用service方法响应客户的请求。
(3) 当服务器关闭时,调用destroy方法,销毁Servlet对象。
HttpServlet类的主要方法:
(1)init方法
Servlet第一次被请求加载时,服务器初始化一个Servlet,即创建一个Servlet对象,这个对象调用init方法完成必要的初始化工作。init()是HttpServlet类中的方法,我们可以在Servlet中重写这个方法。方法描述为:
public void init(ServletConfig config)throws ServletException
该方法在执行时,Servlet引擎会把一个ServletConfig类型的对象传递给init()方法,这个对象就被保存在Servlet对象中,直到Servlet对象被销毁。这个ServletConfig对象负责向Servlet传递服务设置信息,如果传递失败就会发生ServletException, Servlet将不能正常工作。当多个客户端请求一个Servlet时,引擎为每个客户端启动一个线程,那么Servlet类的成员变量会被所有的线程共享。
(2)service方法
当Servlet成功创建和初始化之后,Servlet就调用service方法来处理用户的请求并返回响应。service()是HttpServlet类中的方法,可以在Servlet中直接继承该方法或重写这个方法。方法描述为:
public void service(HttpServletRequest request,HttpServletResponse response)
throw ServletException,IOException
Servlet引擎将两个参数传递给该方法,其中一个参数对象是HttpServletRequest类型的对象,该对象封装了用户的请求信息,此对象调用相应的方法可以获取封装的信息,也就是说使用这个对象可以获取用户提交的信息;另外一个参数对象是HttpServletResponse类型的对象,该对象用来响应用户的请求。
service 方法和init方法不同的是,init方法只被调用一次,而service方法可能被多次调用,当后续的客户请求Servlet服务时,Servlet引擎将启动一个新的线程