1. 程式人生 > >servlet的生命周期的理解

servlet的生命周期的理解

throw exception color 處理 style .get 時間 t對象 import

1.在servlet為客戶端提供服務過程當中,在服務器內部只有一個servlet對象.

意思就是說多個瀏覽器端輸入相同的網址,訪問相同的servlet,tomcat只會new出一個servlet對象。

2.使用線程池的方式給瀏覽器端回應,線程池訪問的都是同一個servlet對象。

3.tomcat讓servlet存在到結束的全過程

加載 ClassLoader(當把我們編譯好的類放入web容器中)

實例化 new (時間:第一次客戶端請求)

初始化 init(ServletConfig)(只調用一次,時間new之後)

處理請求doget 或dopost(多線程方式處理)

退出服務 destroy (時間:web應用程序退出,重新加載,類的定義重新加載)

4.實例化時間代碼驗證(在構造方法加上輸入字符)

當我們只有在瀏覽器端輸入網址訪問時它才出現

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServlet;import java.io.IOException;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class httpservlet extends HttpServlet {
  
public httpservlet(){ System.out.println("new 一個對象"); } protected void doPost(HttpServletRequest req, HttpServletResponse resp){ try {doGet(req,resp); System.out.println("dopost"); }catch(IOException e){} } protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
IOException{ System.out.println("doget"); PrintWriter out =resp.getWriter(); out.println("<html><head><head/><body><h1>hello<h1><body/><html/>"); out.flush(); out.close(); } }

5.new一個servlet對象的驗證

同樣第二次輸入上述鏈接,你會發現沒有構造方法裏面的字符了

6.驗證加載類的時機

當你重新定義類,替換掉以前類時,你會在tomcat服務器端發現提示:加載一個類(我的沒有提示)

7.驗證初始化的時機

跟驗證new一樣,它是new後面的

8.驗證退出請求的時機

當你重啟web服務器,然後在瀏覽器端訪問資源,會發現構造方法又重新執行了,說明上一個對象被destroy了。

(重新將類放入tomcat中,然後tomcat服務器會提示重新加載,然後destroy你原來的servlet對象)

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServlet;import java.io.IOException;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class httpservlet extends HttpServlet {
  public httpservlet(){
    System.out.println("new 一個對象");
  }

  protected void doPost(HttpServletRequest req, HttpServletResponse resp){
    
    try {doGet(req,resp);
         System.out.println("dopost");
    }catch(IOException e){}
  }




  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException{
    
    System.out.println("doget");
    PrintWriter out =resp.getWriter();
    out.println("<html><head><head/><body><h1>hello<h1><body/><html/>");
    out.flush();
    out.close();
 
}
  public void destroy(){
    System.out.println("destroy");
}
  





}

servlet的生命周期的理解