<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 108,comments - 56,trackbacks - 0
         ☆Servlet與CGI區(qū)別 
      Servlet可以和其他資源(文件、數(shù)據(jù)庫、Applet、Java應用程序等)交互,以生成返回給客戶端的響應內(nèi)容。如果需要,還可以保存請求-響應過程中的信息。
     
      采用Servlet,服務器可以完全授權對本地資源的訪問(如數(shù)據(jù)庫),并且Servlet自身將會控制外部用戶的訪問數(shù)量及訪問性質(zhì)。 
      
      Servlet可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統(tǒng)中。 

      可以從本地硬盤,或者通過網(wǎng)絡從遠端硬盤激活Servlet。 

      Servlet可被鏈接(chain)。一個Servlet可以調(diào)用另一個或一系列Servlet,即成為它的客戶端。 

     采用Servlet Tag技術,可以在HTML頁面中動態(tài)調(diào)用Servlet。 

     Servlet API與協(xié)議無關。它并不對傳遞它的協(xié)議有任何假設。 

     像所有的Java程序一樣,Servlet擁有面向?qū)ο驤ava語言的所有優(yōu)勢。 

     Servlet與CGI-BIN概括來講,Servlet可以完成和CGI相同的功能。 

     CGI應用開發(fā)比較困難,因為它要求程序員有處理參數(shù)傳遞的知識,這不是一種通用的技能。CGI不可移植,為某一特定平臺編寫的CGI應用只能運行于這一環(huán)境中。每一個CGI應用存在于一個由客戶端請求激活的進程中,并且在請求被服務后被卸載。這種模式將引起很高的內(nèi)存、CPU開銷,而且在同一進程中不能服務多個客戶。 

     Servlet提供了Java應用程序的所有優(yōu)勢:可移植、穩(wěn)健、易開發(fā)。使用Servlet Tag技術,Servlet能夠生成嵌于靜態(tài)HTML頁面中的動態(tài)內(nèi)容。 

     Servlet對CGI的最主要優(yōu)勢在于一個Servlet被客戶端發(fā)送的第一個請求激活,然后它將繼續(xù)運行于后臺,等待以后的請求。每個請求將生成一個新的線程,而不是一個完整的進程。多個客戶能夠在同一個進程中同時得到服務。一般來說,Servlet進程只是在Web Server卸載時被卸載。


         ☆Servlet與Applet的共同點
      1、都不是獨立的運用程序,沒有main()方法;
     
       2、都不是由用戶或者程序員調(diào)用,而是由另外一個容器調(diào)用;

       3、都由一個生命周期,包含init()和destroy()方法;


         ☆生命周期
      1、在服務器啟動時,當servlet被客戶首次請求或被配置好,這時由服務器加載servlet。Servlet的加載可以通過和用一個自定義的Java類加載工具(可允許自動Servlet重載)從本地或遠程地址來實現(xiàn)。

      2、服務器創(chuàng)建一個servlet類實例來為所有請求服務。利用多線程,可以由單個servlet實例來服務于并行的請求。惟一的例外是,因為實現(xiàn)SingleThreadModel接口的servlet,這樣,服務器會創(chuàng)建一個實例池并從中選擇一個來服務于每一新的請求。此步相當于以下java代碼:Servlet s = (Servlet)c.newInstance();

      3、服務器調(diào)用Servlet的init()方法。它用來保證完成在首次請求servlet處理以前的執(zhí)行過程。如果servlet創(chuàng)建了多個servlet實例,則為每個實例調(diào)用一次init()方法。在調(diào)用初始化時,要給init()方法傳入一個ServletConfig對象,ServletConfig對象包含了初始化參數(shù)和容器環(huán)境的信息。

      4、服務器從包括在客戶請求中的數(shù)據(jù)里構造一個ServletRequest或HttpServletRequest對象,還構造一個ServletResponse或HttpServletResponse對象來返回響應提供方法。其參數(shù)類型依賴于servlet是否分別擴展GenericServlet或HttpServlet。(注意:如果服務器沒有收到對這一servlet的請求,此步驟與以下5---7步驟將不會發(fā)生。) 

      5、服務器調(diào)用servlet的service()方法(對于Httpservlet,service()將調(diào)用更為具體的方法:如:doGet()或doPost()),在此步驟中作為參數(shù)傳遞結(jié)構化對象。當并行的請求到來時,多個service()方法能夠同時運行在獨立的線程中。(除非servlet實現(xiàn)了SingleThreadModel接口)。

      6、通過分析ServletReuest或HttpServletRequest對象,Service()方法處理客戶的請求。并調(diào)用ServletResponse或HttpServletResponse對象來響應。 

      7、如果服務器收到另一個對該servlet的請求,這個處理過程從5步驟重復。 

      8、一旦servlet容器檢測到一個servlet要被卸載,這可能是因為要回收資源或因為它正在被關閉,服務器會在所有servlet的service()線程完成之后(或在服務器規(guī)定時間后)調(diào)用servlet的destroy()方法。然后servlet就可以進行無用存儲單元收集清理。Servlet容器不需要為保留一個servlet而指定時間。 


         ☆幾個主要的類/接口
      1、Servlet接口
      javax.servlet.Servlet接口是所有java servlet的基本接口,Servlet的生命周期由這個接口定義。

      2、GenericServlet類
      GenericServlet類實現(xiàn)了Servlet接口,因此可以通過擴展此類間接實現(xiàn)Servlet接口。GenericServlet中具體實現(xiàn)了Servlet接口中的init()、destroy()、getServletConfig()和getServletInfo()方法,但是只定義了抽象service()方法。因此在擴展的時候必須實現(xiàn)service()方法。

      3、HttpServlet類
      HttpServlet是GenericServlet的子類,為Servlet接口提供了面向HTTP協(xié)議的實現(xiàn)代碼。

      4、HttpServletRequest接口
      HttpServletRequest接口是對Http協(xié)議請求信息的封裝,用(key/value)對的形式來存儲數(shù)據(jù)。

      5、HttpServletResponse接口
      HttpServletResponse接口是對Http協(xié)議響應信息的封裝。
    posted on 2007-10-14 20:16 破繭而出 閱讀(420) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲A丁香五香天堂网| 亚洲AV成人潮喷综合网| 久久久久亚洲av无码专区导航 | 人妻仑乱A级毛片免费看| 成人免费无码大片a毛片软件| 亚洲国产成人综合| 和日本免费不卡在线v| 在线a亚洲老鸭窝天堂av高清| 日本一区二区三区免费高清| 精品亚洲AV无码一区二区| 成人免费一区二区无码视频| 亚洲色精品三区二区一区| 国产精品免费视频播放器| 国产精品亚洲精品日韩电影| 亚洲AV伊人久久青青草原| 国产99视频精品免费视频76| 亚洲人成图片小说网站| 99久9在线|免费| 亚洲AV无码乱码在线观看代蜜桃| 最近的中文字幕大全免费版| 亚洲AV日韩AV永久无码色欲| 亚洲一本大道无码av天堂| 精品免费视在线观看| 亚洲国产精品xo在线观看| 国产精品免费看久久久久| 精品一区二区三区免费视频| 亚洲图片在线观看| 男男AV纯肉无码免费播放无码| 久久精品国产亚洲AV| 亚洲无线码在线一区观看| 亚洲国产精品成人久久蜜臀 | 91麻豆国产免费观看| 亚洲国产日产无码精品| 四虎影视永久免费观看地址| 一区二区三区免费电影| 综合自拍亚洲综合图不卡区| 日本不卡免费新一二三区| 中文字幕a∨在线乱码免费看| 亚洲激情校园春色| 亚洲精品国产综合久久一线| 久久99国产综合精品免费|