servlet、genericservlet、httpservlet之間的區別

 

 

當編寫一個servlet, 必須直接或間接實現 servlet 接口, 最可能實現的方法就是擴展javax.servlet.genericservlet javax.servlet.http.httpservlet 當實現javax.servlet.servlet 接口時必須實現5 個方法

   
init(servletconfig   config)   
service(servletrequest   req,servletresponse   resp)   
destroy()   
getservletconfig()   
getservletinfo()    

service 是執行應用邏輯的入口點, 包容器調用此方法來響應進來得請求, 只是在servlet 被成功初始化後才能調用它 
  
其實servletapplet 差不多, 當一個servlet 被實例化後, 包容器自動去調用固定的方法首先是init(), 然後是service()..... 

  genericservlet 類提供了servlet 接口的基本實現, 所以他的子類都必須實現service() 方法  
  httpservlet
類擴展了genericservlet 並且提供了servlet 接口中具體於http 的實現,它更象一個其他所有的servlet 都要擴展的類 , 其中他定義了兩種形式的service 方法

   service(servirequest req,servletresponse resp) 
  
此方法是genericservletservice() 方法的實現, 他把resquest,response 對象分別轉化爲 httpservletrequesthttpservletresponse 並且調用下面重載的service() 方法, 所以不應當重載上面的 service() 方法

   protect void service(httpservirequest req,httpservletresponse resp) 
  
他用httprequest,response 對象作爲參數, 並且由上面的方法調用,httpservlet 實現這個方法後就成爲一個http 請求的分發者, 他把請求代理給doget(),dopost().....doxxxx() 方法  
  
當包容器爲一個servlet 收到一個請求時, 包容器調用公共的service 方法在把參數轉換爲 httpservirequest,httpservletresponse , 這個公共的方法調用保護的service 根據http 請求方法的類型, 保護的service 方法調用doxxxx() 方法之一.   
doget()
方法是當得到一個get 類型的請求時調用 
dopost()
方法是當得到一個post 類型的請求時調用 

httpservlet
是從genericservlet 繼承而來,因此httpservlet 也有initdestroy 這兩個生命週期函數以及service 方法,只是 httpservlet 還有兩個重要的dopost 方法和doget 方法,並用他們來支持httppostget 方法,就是說如果要支持http get 方法,就要覆蓋doget 方法,如果要支持httppost 方法,就要覆蓋dopost 方法。而get 方法和post 方法的主要區別在於: 
  post
方法的數據傳遞方式比較安全,不會將傳遞的信息顯示在瀏覽器的網址後,而get 方法則會將傳遞的信息顯示在瀏覽器的網址後 ,例如用get 方法的瀏覽器網址:http://127.0.0.1:8080/response.jsp?name=myself ;而用post 方法則爲:http://127.0.0.1:8080/response.jsp ;這種區別當用在密碼傳輸時就顯的更爲重要。

 

 

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