1. 程式人生 > >深入剖析Tomcat筆記2

深入剖析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方法