Servlet生命周期
近期在学习javaweb方面的知识,借鉴视频教程上的例子,留作备注:
Servelet代码如下:
package com.liuxgnu;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*构造方法
*/
public TestServlet()
{
System.out.println("Constructor");
}
/**
*get请求处理
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response); //转向post
}
/**
*Post请求处理
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("doPost");
}
/**
*销毁
*/
@Override
public void destroy()
{
System.out.println("destroy");
}
/**
*初始化
*/
@Override
public void init() throws ServletException
{
System.out.println("init");
}
}
Web.xml就不写了.
第一次请求Servlet的时候,后台打印:
Constructor
init
doPost
由此可以看出,首先执行构造方法,然后执行初始化,然后才执行Post/Get方法.
而第二次访问Servlet的时候,并没有执行构造方法和初始化方法,那就说明,这个类已经生存,且听视频上老师的讲解说”①常规Servlet容器仅生成一个Servlet对象”,有些似懂非懂的样子,但从后台打印出来的结果看,确实只生成了一个对象.
第二次请求Servlet的时候,后台打印:
Constructor
init
doPost
doPost
注解:①常规Servlet容器仅生成一个Servlet对象
非分布式情况下,一个服务器端只生成一个Servlet实例.