Servlet的執行機制和生命週期

2021-09-25 21:58:20 字數 1760 閱讀 8848

當瀏覽器傳送給伺服器乙個servlet請求時,如果這個servlet是第一次被呼叫,那麼伺服器將會自動建立乙個servlet例項,並執行它;而如果這個servlet已經被例項化,那麼伺服器只是會新啟動乙個執行緒來執行它。所以,多個執行緒有可能會去訪問共享的全域性變數,因此,在使用這些全域性變數時,一定要特別小心,讓這些執行緒不會訪問到不同步的資料。除非是需要共享的資訊。

下面我們使用例子進行演示servlet的執行過程,說明只建立乙個例項,而進行多次執行緒呼叫,首先給這個servlet增建乙個建構函式,並在doget()函式中也列印乙個標記,重新部署,看看介面的顯示,**如下所示:

}web執行結果:

重新整理再次訪問

說明伺服器只會建立乙個servlet例項,對於多次訪問,每次之建立乙個新的執行緒進行處理。 

乙個servlet在伺服器上最多隻會建立乙個例項,在此期間會涉及到httpservlet的方法,在編寫servlet程式時,都是讓它繼承httpservlet這個類,然後根據需要去覆蓋httpservlet中的方法。比較常用的方法有:init()、doget()、dopost()、service()、destroy().

(1)doget()/dopost()/service()

service()方法

如果客戶端有乙個對servlet的請求傳送過來,那麼伺服器端會產生乙個新的執行緒,並且讓它呼叫servlet的service()方法。service()方法根據收到的客戶端請求型別,決定調doget()還是dopost()還是其他的do***()方法。

(2)init()方法

對servlet做一些初始化工作,這個方法只會被呼叫一次,不會對每次連線都呼叫,可以將一些初始化**放在該函式中

(3)destroy()方法

如果要刪除某個servlet例項,那麼在刪除之前伺服器會先呼叫destroy()方法。可以在這個方法中執行一些清理動作,比如釋放資料庫連線,關閉開啟的檔案等。

綜上,servlet的生命週期如下圖所示:

clearfix的執行機制和進化

話說為什麼要把這個記下來,因為昨天去面試,問了clearfix的原理,當時腦子不清晰,回答得真是想要咬舌自盡。遂,決定,要搞清楚來龍去脈 資料來自網上博主們,1.最初的清除浮動 clear 現在可能還可以在很多老的站點上可以看到這樣的 相當暴力有效的解決浮動的問題。但是這個用法有乙個致命傷,就是每次...

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...