Web Service——初探MVC之Model

聲明:本人剛接觸Java Web,知識面較窄,會常犯常識性錯誤,望諒解,歡迎指教!

這幾天在設計一個系統的框架,用的是MVC模型,由於剛接觸Web,所以不敢用Struts之類的框架把自己搞暈,慢慢來。

目前的技術結構是Servlet+ Bean+數據庫,服務端提供數據服務,Android客戶端負責展現內容,所以服務端沒有View。

Controller由Servlet實現,在寫Model時我犯渾了,爲了響應多個客戶端的併發請求,我把Model寫成線程,同步的處理請求;問題隨之而來,當我從request中往外拿數據時,取到的是一大堆null,開始我很疑惑,以爲是Controller部分的框架出問題了,可是修改之後問題還沒有解決,於是我開始着手於Model部分的框架;當我看到Model繼承的Thread的時候,讓我想到Servlet的生命週期,我想有可能跟生命週期有關係,因爲Model和Servlet是同步執行的,當Servlet結束的時候,Model可能剛剛執行,Model的執行依賴於request和response,如果Servlet結束時與該次請求對應的request失效,那麼在Model中就有可能獲取不到任何數據。

修改Model框架後運行,沒有任何問題。

雖然運行成功,但是大部分推斷都是猜測,於是通過百度我瞭解到:

1.一般情況下,同一個Servlet只會在服務器中存在一個實例,所以上面關於request的有效性和Servlet生命週期有關的推斷是錯的。

2.對於每一個請求,服務器都會創建一個單獨的線程調用Servlet實例的相應方法來響應請求

通過以上兩點,我推測request的有效性和服務器創建的線程的生命週期有關,如果那個線程結束了,request就無效了,重構前的Model出現的錯誤也能說得通。

現在的問題是怎麼驗證request的有效性和那個線程有關?

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