Servlet的生命週期

2021-09-22 10:09:02 字數 1724 閱讀 7633

生命週期:就是說***的出生、服務,以及死亡

與servlet的生命週期相關的方法有:

void init(servletconfig);

void service(servletrequest,servletresponse);

void destroy();

servlet的init( )

伺服器會在servlet第一次被訪問時建立servlet,或者是在伺服器啟動時建立servlet。如果伺服器啟動時就建立servlet,那麼還需要在web.xml檔案中配置。也就是說預設情況下,servlet是在第一次被訪問時由伺服器建立的。

而且乙個servlet型別,伺服器只建立乙個例項物件,例如在我們首次訪問http://localhost:8080/helloservlet/helloworld時,伺服器通過「/helloworld」找到了繫結的servlet名稱為com.hpit.servlet.helloservlet,然後伺服器檢視這個型別的servlet是否已經建立過,如果沒有建立過,那麼伺服器才會通過反射來建立helloservlet的例項。當我們再次訪問http://localhost:8080/helloservlet/helloworld時,伺服器就不會再次建立helloservlet例項了,而是直接使用上次建立的例項。

在servlet被建立後,伺服器會馬上呼叫servlet的void init(servletconfig)方法。servlet的生命週期中,這個方法只會被呼叫一次。

我們可以把一些對servlet的初始化工作放到init方法中!

servlet的service( )

當伺服器每次接收到請求時,都會去呼叫servlet的service()方法來處理請求。伺服器接收到一次請求,就會呼叫service() 方法一次,所以service()方法是會被呼叫多次的。正因為如此,所以我們需要把處理瀏覽器請求的**寫到service()方法中!

servlet的destroy( )

servlet是不會輕易銷毀的,通常都是在伺服器關閉時servlet才會離去!在伺服器被關閉時,伺服器會去銷毀servlet,在銷毀servlet之前伺服器會先去呼叫servlet的destroy()方法,我們可以把servlet的被銷毀前要執行的**放到destroy()方法中,例如對某些資源的釋放等**放到destroy()方法中。

測試生命週期方法

修改helloservlet如下,然後再去訪問http://localhost:8080/helloservlet/helloworld

public class helloservlet implements servlet 

public servletconfig getservletconfig()

public void destroy()

public string getservletinfo()

public void service(servletrequest req, servletresponse res)

throws servletexception, ioexception

}

在首次訪問helloservlet時,init方法會被執行,而且也會執行service方法。再次訪問時,只會執行service方法,不再執行init方法。在關閉tomcat時會呼叫destroy方法。

Servlet生命週期

servlet生命週期分為三個階段 1,初始化階段 呼叫init 方法 2,響應客戶請求階段 呼叫service 方法 3,終止階段 呼叫destroy 方法 servlet初始化階段 1 自動裝載 servlet容器啟動時自動裝載某些servlet,實現它只需要在web.xml檔案中的之間新增1 ...

Servlet生命週期

什麼時候裝載 servlet 1,servlet容器啟動時自動裝載某些servlet,實現它只需要在web.xml檔案中的 之間新增如下 1 2,在servlet容器啟動後,客戶首次向servlet傳送請求。3,servlet類檔案被更新後,重新裝載servlet。2 初始化階段 呼叫init 方法...

Servlet生命週期

1 webclient向servlet容器 tomcat 發出http請求 2 servlet容器接收webclient的請求,建立servlet物件,呼叫其init方法,3 servlet容器建立乙個httprequest物件,將webclient請求的資訊封裝到這個物件中 4 servlet容器...