JavaWeb,Servlet,Jsp生命週期

JavaWeb的生命週期是由Servlet容器來控制的總的來說分爲三個階段
1.啓動階段:加載web應用相關數據,創建ServletContext對象,對Filter和servlet進行初始化
a.把web.xml中的數據加載到內存中
b.爲JavaWeb應用創建一個ServletContext對象
c.對所有的Filter進行初始化
d.對需要在web應用啓動時就被初始化的Servlet進行初始化

2.運行時階段:爲客戶提供服務
a.所有的Servlet都處於待命狀態,隨時響應客戶請求,提供服務
b.如客戶請求的Servlet還不存在,Servlet容器會先初始化Servlet再調用它的service()方法

3.終止階段:釋放web應用佔用的各種資源
a.銷燬JavaWeb中所有處於運行狀態的Servlet
b.銷燬JavaWeb中所有處於運行狀態的Filter
c.銷燬所有與JavaWeb相關的對象如ServletContext,並釋放資源

Servlet的生命週期也是由Servlet容器來控制也分爲三個階段與JavaWeb相同
1.初始化階段(對應javax.servlet.Servlet接口中的init()方法)
a.Servlet容器加載Servlet類,將其.class文件中的數據讀入內存
b.Servlet容器創建ServletConfig對象,ServletConfig對象包含特定的Servlet的初始化配置信息。同時Servlet容器還會使得ServletConfig對象與當前Web應用的ServletContext對象關聯
c.Servlet容器創建Servlet對象
d.Servlet容器調用Servlet對象的init(ServletConfig config)方法完成初始化。Servlet對象只要通過getServletContext()方法就能得到當前Web應用中的ServletContext對象

2.運行階段(對應Service()方法)
a.當Servlet容器接收到要求訪問特定的Servlet和客戶請求時Servlet容器會創建針對這個請求的ServletRequest對象和ServletResponse對象,然後調用對應Servlet的service()方法從ServletRequest對象中得到客戶請求信息並處理該請求。再通過ServletResponse對象生成響應結果。
b.當Servlet容器把Servlet生成的響應結果發送給客戶,Servlet容器就會銷燬ServletRequest對象和ServletResponse對象

3.銷燬階段(對應destroy()方法)
a.當Web應用被終止時,Servlet容器會調用當前Web應用中所有Servlet對象的destroy()方法,然後再銷燬這些Servlet對象。
b.在destroy()方法中會釋放Servlet所佔用的資源(關閉輸入輸出流,數據庫連接等)
c.Servlet容器銷燬與Servlet對象關聯的ServletConfig對象

注意:Servlet的初始化和銷燬只會發生一次,初始化發生特定Servlet在首次被客戶端訪問。銷燬發生在web應用被終止

JSP的生命週期:JSP的生命週期與Servlet一個區別在於,Servlet容器必須先將Jsp編譯成Servlet類然後再運行它.JSP生命週期如下:
a.解析階段:Servlet容器解析JSP文件的代碼查看是否有語法錯誤
b.翻譯階段:Servlet容器把JSP文件翻譯成Servlet源文件(.java)
c.編譯階段:Servlet容器翻譯Servlet源文件生成Servlet類(.class)
d.初始化階段:加載與JSP對應的Servlet尖,創建其實例,並調用它的初始化方法
e.運行時階段:調用與JSP對應的Servlet實例的服務方法
f.銷燬階段:調用與JSP對應的Servlet實例的銷燬方法,然後銷燬Servlet實例

注意:在JSP的生命週期中,解析,翻譯,編譯是JSP特有的階段,僅發生在JSP文件首次被客戶端請求訪問,JSP文件被更新,與JSP文件相對應的Servlet類的類文件被手工刪除


引自:http://www.24xuexi.com/w/2011-05-06/89435.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章