當瀏覽器傳送給伺服器乙個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 乙個函式,那...