介紹Servlet容器
Servlet是對(duì)支持Java的服務(wù)器的一般擴(kuò)充。它最常見(jiàn)的用途是擴(kuò)展Web服務(wù)器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一種動(dòng)態(tài)加載的模塊,為來(lái)自Web服務(wù)器的請(qǐng)求提供服務(wù)。它完全運(yùn)行在Java虛擬機(jī)上。由于它在服務(wù)器端運(yùn)行,因此它不依賴(lài)于瀏覽器的兼容性。
Servlet容器:
負(fù)責(zé)處理客戶請(qǐng)求、把請(qǐng)求傳送給Servlet并把結(jié)果返回給客戶。不同程序的容器實(shí)際實(shí)現(xiàn)可能有所變化,但容器與Servlet之間的接口是由Servlet API定義好的,這個(gè)接口定義了Servlet容器在Servlet上要調(diào)用的方法及傳遞給Servlet的對(duì)象類(lèi)。
Servlet生命周期:
1、Servlet容器創(chuàng)建Servlet的一個(gè)實(shí)例
2、容器調(diào)用該實(shí)例的init()方法
3、如果容器對(duì)該Servlet有請(qǐng)求,則調(diào)用此實(shí)例的service()方法
4、容器在銷(xiāo)毀本實(shí)例前調(diào)用它的destroy()方法
5、銷(xiāo)毀并標(biāo)記該實(shí)例以供作為垃圾收集
一旦請(qǐng)求了一個(gè)Servlet,就沒(méi)有辦法阻止容器執(zhí)行一個(gè)完整的生命周期。
容器在Servlet***被調(diào)用時(shí)創(chuàng)建它的一個(gè)實(shí)例,并保持該實(shí)例在內(nèi)存中,讓它對(duì)所有的請(qǐng)求進(jìn)行處理。容器可以決定在任何時(shí)候把這個(gè)實(shí)例從內(nèi)存中移走。在典型的模型中,容器為每個(gè)Servlet創(chuàng)建一個(gè)單獨(dú)的實(shí)例,容器并不會(huì)每接到一個(gè)請(qǐng)求就創(chuàng)建一個(gè)新線程,而是使用一個(gè)線程池來(lái)動(dòng)態(tài)的將線程分配給到來(lái)的請(qǐng)求,但是這從Servlet的觀點(diǎn)來(lái)看,效果和為每個(gè)請(qǐng)求創(chuàng)建一個(gè)新線程的效果相同。
【編輯推薦】