Web容器&Servlet 筆記

Web容器會爲每個請求創建一個線程,當一個Servlet實例服務多個請求時,就相當於Servlet被多個線程共同訪問,所以要注意線程安全(Thread-safe)的問題。例如,在Servlet中有類變量(Class Variable)時就要特別注意,並非不可以在Servlet中定義類變量,基本上建議Servlet中的類變量在服務請求時,最好作爲常數或只讀對象使用應該避免在服務請求時對類變量設值,如果真要對類變量設值,記得處理同步化,但也要注意性能的問題。

 

在客戶端只針對格式等與安全無關的部分進行驗證,在服務器端必須針對與安全相關的驗證。

 

由於ServletRequest對象僅在此次請求週期內有效,在請求/相應之後,ServletRequest對象會被銷燬而回收資源,設值在ServletRequest對象中的屬性自然也就消失了,所以通過setAttribute()所設置的屬性才稱爲請求範圍屬性。

 

要編寫一個Servlet類很簡單,只要繼承javax.servlet.http.HttpServlet類,並重寫doGet()、doPost()等對應HTTP請求的方法即可。然而到這裏爲止,還稱不上一個可以服務的Servlet,因爲容器還沒有加載這個Servlet類。

 

必須先設置好web.xml,這樣容器才知道如何加載及如何處理Servlet。Web應用程序在文件組織上有特定結構,容器會到特定的位置尋找類或設置文件。

 

不建議也不應該在繼承了HttpServlet之後,重寫service()方法,這會覆蓋掉HttpServlet中所定義的HTTP默認處理流程。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章