一、什么是Servlet
1、Servlet是服务器端的Java应用程序,可以产生动态Web页面。透过JSP执行过程可以知道JSP最终被编译成一个.class文件,查看该文件对应的Java类,发现该Java类继承自org.apache.jasper.runtime.HttpJspBase类,而HttpJspBase继承自HttpServlet类。由此可知JSP第一次运行时实质上是被JSP引擎翻译成了一个Servlet,然后再编译,最后再执行。
2、Servlet是在javax.serlvet包中定义的一个接口。它声明了Servlet生命周期中必不可少的三个方法init()、service()和destroy()。每个Servlet(无论是在SDK中定义的,或是自定义的)都必须实现这三个方法,而且由服务器在特定的时刻调用。
3、自定义Servlet类继承HttpServlet抽象类,HttpServlet抽象类继承自GenericServlet抽象类,GenericServlet抽象类实现了Servlet、ServletConfig和Serializable接口。
二、Servlet生命周期详解
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期包含了下面4个阶段:加载及实例化、初始化、处理请求和销毁。
1、加载及实例化
(1)、Servlet容器负责加载和实例化Servlet。当客户端第一次向服务器发送该Servlet请求时,Servlet容器会加载并创建Servlet实例。当客户端(可以是非第一次请求的客户端)再次向服务器发送该Servlet请求时,服务器会从内存中查找该Servlet实例,并用找到的Servlet实例处理用户请求。
(2)、在该过程中,S