Tomcat学习笔记(二)—— 一个简单的Servlet容器

1、简介:Servlet编程是通过javax.Servlet和javax.servlet.http这两个包的类和接口实现的,其中javax.servlet.Servlet接口至关重要,所有的Servlet必须实现该接口或者继承实现了该接口的类。
 
2、Servlet接口有5个方法:
public void init(ServletConfig config) throws ServletException;
public void service(ServletRequest request, ServletResponse response) throes ServletException, IOException;
public void destroy();
public ServletConfig getServletConfig();
public String getServletInfo();
 
3、Servlet声明周期方法:init、service、destroy
(1)init:在Servlet类已经初始化之后,init方法会被servlet容器调用。init方法只被调用一次,表示servlet已经被加载进服务中了。init方法必须在servlet可以成功接收任何请求之前成功运行完毕。servlet程序员可以通过覆盖这个方法来写仅仅需要运行一次的初始化代码,例如架子啊数据库驱动,值初始化等。在其他情况下,该方法是空的。
(2)Servlet,servlet容器给servlet容器调用service方法,该方法接收一个ServletRequest参数和一个ServletResponse参数,Servlet Request对象用于向servlet中传递客户端的请求参数,ServletResponse对象则负责封装Servlet响应。在servlet生命周期中,service()方法会被调用多次。
(3)Destroy,用于从服务器中移除一个servlet实例,通常使用在servlet容器正在关闭或者servlet容器需要一些空闲内存时,仅仅在所有servlet容器的service方法已经退出或者超时淘汰的时候,这个方法才被调用。在servlet容器已经调用完destroy方法之后,在同一个servlet里将不会再调用service方法,destroy方法提供了一个机会来清理任何已经被占用的资源,例如内存,文件句柄和线程,并确保任何持久化状态和servlet的内存当前状态是同步的。
 
4、Servlet容器针对每个servlet的HTTP请求的工作过程
(1)第一次调用servlet的时候,加载该servlet类并调用servlet的init方法(仅仅一次)
(2)对每次请求,构造一个javax.servlet.ServletRequest实例和一个javax.servletServletResponse实例。
(3)调用servlet的service方法,同时传递ServletRequest和ServletResponse对象。
(4)当servlet类被关闭时,调用servlet的destroy方法并卸载srvlet类。
原文地址:https://www.cnblogs.com/bjh1117/p/7150538.html