Servlet源代码学习札记-1

Servlet源代码学习笔记-1

一。关键类介绍:

1。servlet通用类:

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable

    //servlet容器会调用该方法,来完成servlet的初始化

    //config参数是,servlet容器传进来的servlet相关的配置参数信息

    public void init(ServletConfig config) throws ServletException {
        this.config = config;

        this.init();

    }

    //一般我们定义的子类会覆盖该方法

    public void init() throws ServletException {
     
    }

 

 

    //从config中取得servlet名,web.xml中的<servlet-name>

    public String getServletName()

    //从config中取得ServletContext

    public ServletContext getServletContext()

    //从config中取得servlet的初始化参数,web.xml中的<init-param>

    public String getInitParameter(String name)

 


   //servlet容器会调用该方法,来完成servlet的销毁,一般我们定义的子类会覆盖该方法

   public void destroy() {
   }

 


   //抽象方法,servlet容器接收到一个request的时候,会调用该方法,来对request进行应答

   public abstract void service(ServletRequest req, ServletResponse res)
      throws ServletException, IOException;

 

我们可以通过继承javax.servlet.GenericServlet来定义自己的servlet,但是必须覆盖service方法。

 

2。HttpServlet类

public abstract class HttpServlet extends GenericServlet implements java.io.Serializable

 

覆盖了父类的抽象方法

public void service(ServletRequest req, ServletResponse res)
{

      //调用下面的protected void service方法

}

 

根据request方式,来调用doXXX方法,如doGet,doPost

protected void service(HttpServletRequest req, HttpServletResponse resp)

 

 

get/post请求方式的时候,调用该方法来对request进行应答,子类必须覆盖该方法

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
protected void doPost(HttpServletRequest req, HttpServletResponse resp)

一般我们会通过继承javax.servlet.http.HttpServlet来定义自己的servlet,但必须覆盖doGet/doPost方法