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被成功初始化後才能調用它
   其實servlet和applet差不多,當一個servlet被實例化後,包容器自動去調用固定的方法首先是init(),然後是service().....

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

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

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

httpservlet是從genericservlet繼承而來,因此httpservlet也有init和destroy這兩個生命週期函數以及service方法,只是httpservlet還有兩個重要的dopost方法和doget方法,並用他們來支持http的post和get方法,就是說如果要支持http的get方法,就要覆蓋doget方法,如果要支持http的post方法,就要覆蓋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;這種區別當用在密碼傳輸時就顯的更爲重要。

發佈了22 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章