servlet_6

而Servelt的API它做的很好,你只要繼承它的一個類,就等於你已經拿到數據了,你需要做的只是把數據的HTTP包給拆開,就行了,返回呢,提供了一個接口,但是一般都不直接用那個接口,都是封裝的用,比如dispatch到一個靜態頁面或者jsp。是一個dispatch的接口,它應該是封裝了上面的那個返回的接口。這樣寫一個Servelt就很簡單了。
在給代碼前,我還講講HTTP協議吧。(個人理解)協議是個什麼玩意呢?它和規範有什麼區別呢?這個本來是不需要關心的,但是大致的知道一下又何妨呢。協議是雙方的,規範是全方位的,協議是必須遵循的,規範是倡議大家遵循的。協議是用來封和拆某個東西的,規範是用來指導大家編程的。大家知道,網絡的數據傳輸的最底層是以二進制數據流的,那我雙方要交互,要識別各自傳達的信息,總不能是基於二進制數據流吧,於是用協議來封裝數據流,大家可見的就是HTTP的數據包,這個數據包是用HTTP協議來對底層的數據流進行封裝的。規範呢?更加的主觀了,拿JDBC規範來說,哦,sun倡議大家在用java語言對數據庫進行操作的時候儘量在JDBC的規範下編程。然而你完全的可以不在這個規範下,照樣可以用java語言對數據庫進行操作,就這麼一回事。擴展一下魯訊說的,世界上有很多java語言對數據操作的路,JDBC只是其中的一條,然後走JDBC的人多了,於是大家都走了。網絡有一個很重要的性格是交流,爲了交流,大家總是趨向於走相同的路,於是規範就慢慢的成爲了標準了,無可厚非。

於是呢,HTTP協議你也不需要管了,你需要管的只是HTTP數據包是什麼樣的格式,因爲你在Servlet裏面拿到的就是一個HTTP數據包。你只要對它的格式瞭解就完全ok了,然後依據格式把相應的數據取出來用就ok了。

於是問題又變成了HTTP數據包的格式。這個不需要你來設計,你只要知道一下就ok了,整個問題就簡單化了,說了APP的開發人員是幸福的,而且今後會逐漸的更加幸福。這個和soap的問題一樣,大家可以去關注一下。

然而問題又來了,從瀏覽器的設計者角度來說,我總不能只是簡單的給出一個button,然後說你準備好你的數據,然後點擊一個這個button,就ok了。這樣需求就來了,如果我想以不同的方式來傳數據呢?這樣就出來了兩個詞Get和Post,這兩次詞是在每一個Servlet都會有的。瀏覽器可以通過Get方法把數據包傳過來,於是Servlet裏面就有一個deGet的方法來處理這個數據包,瀏覽器可以通過Post方法把數據包傳過來,於是Servlet裏面就有一個doPost方法來處理數據包。只是這兩個的邏輯是一樣子的,數據包都是一樣子的,都是HTTP協議下。之間的區別只是對數據包的封裝不同,這裏就不多少了,doGet和doPost這兩個方法你都要寫,而且邏輯是一樣的,因爲你Servelt也不知道客戶端是通過Get還是Post把數據包傳過來。

然後你想想,要你來設計一個HTTP數據包,你想應該包括什麼東西呢?當然,我可以直接告訴你HTTP數據包是什麼樣子的,但是何不自己想想,要你來設計會設計成什麼樣子呢?

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