Re: [問題]有關Servlet和container的問題
※ 引述《shorttime (鄉民)》之銘言:
: 關於servlet和container,
: 我在網路上有看到相關描述:
: During initialization stage of the Servlet life cycle,
: the web container initializes the servlet instance
: by calling the init() method.
: Each request is serviced in its own separate thread.
: The Web container calls the service() method of the servlet
: for every request.
: The service() method determines the kind of request being made
: and dispatches it to an appropriate method to handle the request.
: Finally, the Web container calls the destroy() method that takes
: the servlet out of service.
: (來源出處:http://en.wikipedia.org/wiki/Java_Servlet )
: 我有3個基本問題想請教大家一下,
: 問題一:
: 假設我有一個servlet的程式,
: 程式碼如下:
: import java.io.*;
: import javax.servlet.*;
: import javax.servlet.http.*;
: public class HelloServlet extends HttpServlet {
: public void doGet(HttpServletRequest request,
: HttpServletResponse response)
: throws IOException, ServletException {
: PrintWriter out = res.getWriter();
: out.println("Hello, world!");
: out.close();
: }
: }
: 那....在container的程式內部,
: 是不是會執行"類似"下列這些動作呢?
: HelloServlet servlet = new HelloServlet();
: servlet.init();
: servlet.servlet();
: servlet.destroy();
這要看 "類似" 到什麼地步了 :p
當然同樣是會有 "建立" HelloServlet 實體的步驟,
另外 3 個 method call 也確定存在。
不過實際的過程比較複雜,
首先是 container 根本不知道你 "未來" 會寫一個叫作 HelloServlet 的類別,
它如何 "事先" 寫出 new HelloServlet() 這樣的 code 呢?
所以這部份是用 Reflection 動態載入並建立實體。
另外 Servlet 也有使用 pool 的概念,
當 pool 中還存在對應的物件時,就不需要重新建立一個新的。
總地來說,Constructor 和那 3 個 method 確實都會被呼叫。
: 問題二:
: 從上述的HelloServlet程式碼是不是可以看出,
: HelloServlet是直接使用HttpServlet的service(),init()和destroy(),
: 而沒有對這兩個method做任何override和overload的動作呢?
你這裡需要問的只有 overriding,而答案確實是如你所說。
: 問題三:
: 請問....HttpServlet的service(),init()和destroy()完整程式碼內容,
: 在哪個網站可以查的出來嗎?
: 因為我想藉由程式碼的內容得知,
: 一個servlet的程式做初始化,處理request,做destroy的詳細動作.
: 還麻煩各位不吝惜指教一下,
: 謝謝!
以 Tomcat 而言,它的 source code 是可以自由下載的,
http://tomcat.apache.org/download-60.cgi
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.231
推
01/14 16:56, , 1F
01/14 16:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):