Servlet 生命周期分为三个阶段:
1,初始化阶段 调用 init()方法
2,响应客户请求阶段 调用 service()方法
3,终止阶段 调用 destroy()方法
Servlet 初始化阶段:
在下列时刻 Servlet 容器装载 Servlet:
1,Servlet 容器启动时自动装载某些 Servlet,实现它只需要在 web.XML 文件中的
<Servlet></Servlet>之间添加如下代码:
<loadon-startup>1</loadon-startup>
2,在 Servlet 容器启动后,客户首次向 Servlet 发送请求
3,Servlet 类文件被更新后,重新装载 Servlet
Servlet 被装载后,Servlet 容器创建一个 Servlet 实例并且调用 Servlet 的 init()方法进行初始
化。在 Servlet 的整个生命周期内,init()方法只被调用一次。
Servlet 工作原理:
首先简单解释一下 Servlet 接收和响应客户请求的过程,首先客户发送一个请求,Servlet 是调用
service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调
用 doGet,doPost 等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在
Servlet 接口和 GenericServlet 中是没有 doGet,doPost 等等这些方法的,HttpServlet 中定义了这些
方法,但是都是返回 error 信息,所以,我们每次定义一个 Servlet 的时候,都必须实现 doGet 或
doPost 等这些方法。
每一个自定义的 Servlet 都必须实现 Servlet 的接口,Servlet 接口中定义了五个方法,其中比较重
要的三个方法涉及到 Servlet 的生命周期,分别是上文提到的 init(),service(),destroy()方法。
GenericServlet 是一个通用的,不特定于任何协议的 Servlet,它实现了 Servlet 接口。而 HttpServlet
继承于 GenericServlet,因此 HttpServlet 也实现了 Servlet 接口。所以我们定义 Servlet 的时候只需
要继承 HttpServlet 即可。
Servlet 接口和 GenericServlet 是不特定于任何协议的,而 HttpServlet 是特定于 HTTP 协议的
类,所以 HttpServlet 中实现了 service()方法,并将请求 ServletRequest,ServletResponse 强转为
HttpRequest 和 HttpResponse。
public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException
{
HttpRequest request;
HttpResponse response;
评论0
最新资源