sevlet生命週期

2021-09-09 05:49:15 字數 1348 閱讀 9073

1)通過對映找到到servlet-class的內容,字串: com.itmayiedu.a_servlet.firstservlet

2)通過反射構造firstservlet物件

2.1 得到位元組碼物件

class clazz = class.forname("com.itmayiedu.a_servlet.firstservlet");

2.2 呼叫無引數的構造方法來構造物件

object obj = clazz.newinstance();     ---1.servlet的構造方法被呼叫

3)建立servletconfig物件,通過反射呼叫init方法

3.1 得到方法物件

method m = clazz.getdeclaremethod("init",servletconfig.class);

3.2 呼叫方法

m.invoke(obj,config);             --2.servlet的init方法被呼叫

4)建立request,response物件,通過反射呼叫service方法

4.1 得到方法物件

4.2 呼叫方法

m.invoke(obj,request,response);  --3.servlet的service方法被呼叫

5)當tomcat伺服器停止或web應用重新部署,通過反射呼叫destroy方法

5.1 得到方法物件

method m = clazz.getdeclaremethod("destroy",null);

5.2 呼叫方法

m.invoke(obj,null);            --4.servlet的destroy方法被呼叫

servlet在第一次訪問的時候初始化,init()-->service() 根據判斷請求是post方式還是get方式,執行service中post方法或者get方法-->web程式停止或重新部署呼叫destroy()方法銷毀

注意:servlet是單列的,因為只會第一次訪問的時候才會建立物件,後面訪問都不會在建立物件。

證明:在servlet方法中寫乙個建構函式來證明。

servlet是執行緒不安全的?如何讓servlet執行緒安全?

1)把使用到共享資料的**塊進行同步(使用synchronized關鍵字進行同步)

2)建議在servlet類中盡量不要使用成員變數。如果確實要使用成員,必須同步。而且盡量縮小同步**塊的範圍。(**使用到了成員變數,就同步**!!),以避免因為同步而導致併發效率降低。

sevlet生命週期

在servlet為客戶端提供服務的過程中,也就是它的生命全過程裡面,在伺服器端只有乙個servlet物件。生命全過程 載入 classloader 例項化 當客戶端第一次傳送請求到伺服器端時,會new出乙個servlet例項。初始化 當new出乙個例項後,tomcat自動呼叫init 來做一些初始化...

React 生命週期 生命週期方法

生命週期 掛載 更新 解除安裝 元件被建立 執行初始化 並被掛載到dom中,完成元件的第一次渲染 constructor props getderivedstatefromprops props,state render componentdidmount 元件被建立時會首先呼叫元件的構造方法,接受...

actived生命週期 Vuejs 生命週期

每個 vue 例項在被建立時都要經過一系列的初始化過程。如需要設定資料監聽 編譯模板 將例項掛載到 dom 並在資料變化時更新 dom 等。同時在這個過程中也會執行一些叫做生命週期鉤子的函式,這給了使用者在不同階段新增自己的 的機會。乙個 vue 例項 我們建立乙個 vue 例項,並在每個階段驗證 ...