深入剖析Tomcat笔记2

第二章 一个简单的servlet容器

2.1 javax.servlet.Servlet接口

  该接口是Servlet编程中最重要的,所有的servlet都必须实现该接口或继承自实现该接口的类

  5个方法

public void init(ServletConfig config) throws ServletException  

public void service(ServletRequest request, ServletResponse response)

  throws ServletException, java.io.IOException 

public void destroy()
public ServletConfig getServletConfig()
public java.lang.String getServletInfo()

  前三个方法是与servlet生命周期相关的方法。

  init()方法进行初始化,servlet容器只会调用该方法一次,调用后则可以执行服务的方法。

  service()方法,可能被调用多次

  destroy()方法,一般当servlet容器关闭时或者servlet容器要释放内存时,才会将servlet实例移除

package ecnu.cv.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class PrimitiveServlet implements Servlet {

    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }

    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        System.out.println("service....");
        PrintWriter writer = response.getWriter();
        writer.println("Hello servlet");
    }

    public void destroy() {
        System.out.println("destroy");
    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public String getServletInfo() {
        return null;
    }

}
View Code

2.2 应用程序1

  需求分析:

    一个功能齐全的servlet容器有以下几件事要做:

      1. 当第一次调用某个servlet时,要载入该servlet,并调用其init()方法(仅仅调用一次)

      2. 针对每个request请求,创建一个javax.servlet.ServletRequest实例和一个javax.servlet.ServletResponse实例

      3. 调用该servlet的service方法,将servletRequest对象和servletResponse对象作为参数传入;

      4. 当关闭该servlet时,调用其destroy()方法,并卸载该servlet类

  目标:

    1. 实现HTTP请求

    2. 创建一个servletRequest对象和一servletResponse对象

    3. 若请求是一个静态资源,则调用staticResourceProcessor对象的process()方法,传入servletRequest对象和servletResponse对象

    4. 若请求的是servlet,则载入相应的servlet类,调用其service方法,传入servletRequest对象和servletResponse方法

猜你喜欢

转载自www.cnblogs.com/ecnu-llblog/p/10115967.html