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;這種區別當用在密碼傳輸時就顯的更為重要。

 

原文:http://www.cnblogs.com/linux2009/articles/1693573.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM