回覆列表
  • 1 # 小小平凡生活雜記

    Servlet的生命週期是由servlet的容器來控制的。分為3個階段:初始化階段、執行階段、銷燬階段。


    初始化階段:

    初始化階段步驟:

    Servlet容器載入servlet類,把它的. Class檔案中的資料讀到記憶體中。

    Servlet容器建立servletConfig物件。servletConfig物件包含了servlet的初始化配置資訊。此外servlet容器還會使得servletConfig物件與當前的web應用的servletContext物件關聯。

    Servlet容器建立servlet物件。

    Servlet容器呼叫servlet物件的init(ServletConfig config)方法。

    透過初始化步驟,建立了servlet物件和servletConfig物件,並且servlet物件與servletConfig物件關聯,而servletConfig物件又與當前物件的servletContext物件關聯。當servlet容器完成servlet後,servlet物件只要透過getServletContext()方法就能得到web應用的servletContext物件。


    注:servlet初始化的情況:

    (1) 當web應用處於執行階段時,特定的servlet被客戶端首次請求訪問。


    (2) 在web.xml檔案中為servlet設定了<load-on-startup>元素


    <servlet>


    <servlet-name>servlet1</servlet-name>


    <servlet-class>servlet.servlet1</servlet-class>


    <load-on-startup>0</load-on-startup>


    </servlet>


    說明:


    在servlet的配置當中,<load-on-startup>5</load-on-startup>的含義是:


    標記容器是否在啟動的時候就載入這個servlet。


    當值為0或者大於0時,表示容器在應用啟動時就載入這個servlet;


    當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才載入。


    正數的值越小,啟動該servlet的優先順序越高。


    (3) 當web應用被重新啟動時,web應用中的所有servlet會在特定的時間被重新初始化。


    執行階段

    在這個階段sevlet可以隨時響應客戶端的請求。當servlet容器接到訪問特定的servlet請求時,servlet容器會建立針對與這個請求的servletRequest和servletResponse物件,然後呼叫service()方法,並把這兩個物件當做引數傳遞給service()方法。Service()方法透過servletRequest物件獲得請求資訊,並處理該請求,再透過servletResponse物件生成響應結果。


    【不管是post還是get方法提交,都會在service中處理,然後,由service來交由相應的doPost或doGet方法處理,如果你重寫了service方法,就不會再處理doPost或doGet了,如果重寫sevice()方法,可以自己轉向doPost()或doGet()方法】


    注:當servlet容器把servlet生成的響應結果傳送給客戶後,servlet容器會銷燬servletRequest和sevletResponse物件。


    銷燬階段

    當Web應用被終止時,servlet容器會先呼叫web應用中所有的servlet物件的destroy()方法,然後在銷燬servlet物件。此外容器還會銷燬與servlet物件關聯的servletConfig物件。


    在destroy()方法的實現中,可以釋放servlet所佔用的資源。如關閉檔案輸入輸出流,關閉與資料庫的連線。


  • 中秋節和大豐收的關聯?
  • 父親為了送女兒上大學,坐20小時的火車,自己不捨得一晚的住宿費,住在24h店裡,對這種現象你怎麼看?