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实例.

posted @ 2014-01-28 10:52  狂热的猴子  阅读(212)  评论(0编辑  收藏  举报