servlet的生命周期的理解
阿新 • • 發佈:2017-09-19
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) throwsIOException{ 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的生命周期的理解