亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Servlet技術及其與CGI的比較

2019-11-18 15:08:20
字體:
來源:轉載
供稿:網友

  WebSphere application Server作為e-Business應用的核心,提供了基于java Servlet技術的引擎,它把基本的HTTP Server擴充成為基于Java的應用服務器,提供了比CGI技術更優的性能。本文旨在對Java Servlet技術作一般性的介紹,并與傳統的CGI技術進行比較。
  Servlet是用Java編寫的Server端程序,它與協議和平臺無關。Servlet運行于Java-enabled Web Server中。Java Servlet可以動態地擴展Server的能力,并采用請求-響應模式提供Web服務。

  最早支持Servlet技術的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server開始支持標準的Servlet API。Servlet的主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。這個過程為:

  ?客戶端發送請求至服務器端;

  ?服務器將請求信息發送至Servlet;

  ?Servlet生成響應內容并將其傳給Server。響應內容動態生成,通常取決于客戶端的請求;

  ?服務器將響應返回給客戶端。

  Servlet看起來像是通常的Java程序。Servlet導入特定的屬于Java Servlet API的包。因為是對象字節碼,可動態地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為Faceless Object。

  Servlet的優勢

  Java Servlet提供了許多優勢:

  ?Servlet可以和其他資源(文件、數據庫、Applet、Java應用程序等)交互,以生成返回給客戶端的響應內容。假如需要,還可以保存請求-響應過程中的信息。

  ?采用Servlet,服務器可以完全授權對本地資源的訪問(如數據庫),并且Servlet自身將會控制外部用戶的訪問數量及訪問性質。

  ?Servlet可以是其它服務的客戶端程序,例如,它們可以用于分布式的應用系統中。

  ?可以從本地硬盤,或者通過網絡從遠端硬盤激活Servlet。

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

  ?采用Servlet Tag技術,可以在Html頁面中動態調用Servlet。

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

  ?像所有的Java程序一樣,Servlet擁有面向對象Java語言的所有優勢。

  Servlet與CGI-BIN

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

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

  Servlet提供了Java應用程序的所有優勢??可移植、穩健、易開發。使用Servlet Tag技術,Servlet能夠生成嵌于靜態HTML頁面中的動態內容。

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

  圖1 Servlet運行模式

  圖2 Servlet生命周期

  Servlet生命周期

  Servlet的生命周期(見圖2)可以被歸納為以下幾點:

  ?裝載Servlet。這項操作一般是動態執行的。然而,Server通常會提供一個治理的選項,用于在Server啟動時強制裝載和初始化特定的Servlet(1);

  ?Server創建一個Servlet的實例(2);

  ?Server調用Servlet的init()方法(3);

  ?一個客戶端的請求到達Server(1);

  ?Server創建一個請求對象(4);

  ?Server創建一個響應對象(5);

  ?Server激活Servlet的service()方法(6),傳遞請求(7)和響應(8)對象作為參數;

  ?service()方法獲得關于請求對象的信息,處理請求,訪問其他資源(9),獲得需要的信息(10);

  ?service()方法使用響應對象的方法,將響應傳回Server(11)、(12),最終到達客戶端(13)。service()方法可能激活其它方法以處理請求,如doGet()或doPost()或程序員自己開發的新的方法;

  ?對于更多的客戶端請求,Server創建新的請求和響應對象,仍然激活此Servlet的service()方法,將這兩個對象作為參數傳遞給它。如此重復以上的循環,但無需再次調用init()方法。一般Servlet只初始化一次;

  ?當Server不再需要Servlet時(一般當Server關閉時),Server調用Servlet的Destroy()方法。

  Servlet與CGI程序的比較

  CGI(Common Gateway Interface)程序,主要用Perl、Shell Script或C編寫,能夠向客戶端提供動態內容,即每次客戶端瀏覽器訪問某一頁面時,可以看到不同的內容。這里對完成相同功能的CGI程序和Java Servlet程序作一比較,以便更清楚地看到Servlet的簡單特性。

  這里CGI和Servlet程序的功能均為獲得客戶端在瀏覽器表單中輸入的參數(Firstname,Lastname),并將返回給客戶端。相應的CGI程序和Servlet程序分別如下:

  ?CGI程序(Perl):

  $query?string=$ENV{?QUERY?STRING?};

  $query?string=As/%([dA-Fa-f][dA-Fa-f])/pack(″C″,hex()$1))/eg;$query?string=As/+//g;

  @pairs=split(/&/,$query?string);

  foreach $pair(@pairs) {

   ($key,$value)=split(/=/,$pair);

   $form?data{$key}=$value;

  }

  $firstname=$form?data{″firstname″};

  $lastname=$form?data{″lastname″};

  PRint ″Hello,$firstname $lastname. Thank you for your visit! ″;

  ?Servlet程序:

  public void service(HttpServletRequest request,HttpServletResponse response)

  throws ServletExeption,IOExeption

  {

   ServletOutputStreamout=response.getOutputStream();

   response.setContentType(″text/html″);

   String firstname=request.getParameter(″firstname″);

   String lastname=request.getParameter(″lastname″);

   out.println(″Hello,″+firstname+″ ″+lastname+″.″);

   out.println(″Thank you for your visit!″);

   out.lose()

  }

  可以很明顯地看到Java Servlet源代碼比相應的CGI Perl Script簡單許多。這里需要導入三個package:javax.servlet、javax.servlet.http和java.io。定義Servlet的類擴展了HttpServlet class,而不是GenericServlet class,因為此Servlet需要與HTML form進行交互。

  在CGI程序中有很大一部分用于處理對參數的提取和解碼過程,而在Servlet程序中,解碼傳遞的參數部分并不需要額外編寫。從HttpServlet class繼續來的基本函數可以自動完成解碼的過程。因此,程序員可以在Servlet service()方法中直接獲取由客戶端創建和編碼的Key-value對。解碼后的Key-value對可以直接從HttpServlet class的service()方法的第一個參數中獲得。這將極大地減少程序員的勞動量和重復的代碼勞動,并降低編碼難度。

  綜上所述,Servlet在性能、編寫難度、可移植性等方面比CGI有明顯優勢。在WebSphere Application Server中提供了功能強大的Servlet API,它們比JSDK擁有更多的功能和更優的性能,為Servlet的編程提供了很好的支持。隨著WAS的日益推廣和Java技術的普及,可以預見,Servlet技術將取代CGI,成為對Web Server功能擴充的標準技術。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
不卡在线观看电视剧完整版| 2019最新中文字幕| 精品自拍视频在线观看| 欧美夫妻性生活xx| 欧美性xxxx极品hd欧美风情| 91超碰中文字幕久久精品| 久久精品国产亚洲7777| 国产成人精品在线观看| 亚洲第一天堂无码专区| 欧美在线视频网| 日韩欧美国产骚| 久久久久久噜噜噜久久久精品| 国产精品久久久久久久久久久久久| 亚洲一区999| 久久视频在线看| 国产成人综合精品在线| 成人观看高清在线观看免费| 亲子乱一区二区三区电影| 欧美在线视频观看免费网站| 亚洲人成电影网站色xx| 国产丝袜一区二区三区免费视频| 欧美性视频网站| 亚洲最新中文字幕| 欧美在线一区二区三区四| 国产精品日韩在线播放| 国产欧美在线视频| 亚洲欧洲午夜一线一品| 日韩欧美精品网站| 日韩成人中文字幕在线观看| 日韩美女视频免费在线观看| 久久艹在线视频| 92国产精品久久久久首页| 亚洲国产精品中文| 精品国产一区二区三区久久久| 精品自拍视频在线观看| 亚洲欧洲在线视频| 国外日韩电影在线观看| 日韩电影免费在线观看| 欧美中文字幕在线播放| 欧美又大又硬又粗bbbbb| 亚洲欧美国产一本综合首页| 国产不卡精品视男人的天堂| 中文字幕九色91在线| 亚洲第一黄色网| 国产在线精品一区免费香蕉| 91在线直播亚洲| 日韩高清中文字幕| 国产999精品久久久| 欧美一区在线直播| 成人在线视频网| 亚洲www在线观看| 日韩在线观看精品| 日韩高清人体午夜| 久久不射热爱视频精品| 色偷偷av一区二区三区乱| 欧洲s码亚洲m码精品一区| 亚洲国产精品99久久| 69av在线播放| 精品av在线播放| 中文字幕9999| 2018国产精品视频| 波霸ol色综合久久| 亚洲精品成人av| 日韩av影院在线观看| 精品国产福利在线| 国产精品美女视频网站| 中文字幕亚洲一区| 日本精品久久久久久久| 久久久久久久爱| 国产亚洲精品美女久久久| 欧美裸体xxxx极品少妇软件| 国产精品亚洲网站| 91亚洲精品在线| 久久国产精品久久久久久久久久| 成年人精品视频| 一区二区三区国产在线观看| 国产成人精品最新| 日本午夜在线亚洲.国产| 成人免费视频在线观看超级碰| 国产精品久久在线观看| 国产乱人伦真实精品视频| 国产成人精品av| 91久久综合亚洲鲁鲁五月天| 亚洲曰本av电影| 欧美日韩性生活视频| 国产日韩欧美中文| 久久亚洲国产精品| 日韩亚洲一区二区| 亚洲最新视频在线| 欧美激情精品久久久久久大尺度| 在线观看欧美日韩国产| 成人av色在线观看| 欧美壮男野外gaytube| 91视频国产一区| 狠狠躁夜夜躁久久躁别揉| 日韩av电影手机在线观看| 日韩美女视频在线观看| 精品久久久久久久大神国产| 日韩欧美亚洲范冰冰与中字| 91精品在线观看视频| 日韩电影在线观看中文字幕| 国产91免费观看| 国产欧美精品va在线观看| 国产欧美精品在线| 欧美区二区三区| 国内外成人免费激情在线视频| 91精品久久久久久| 中文字幕精品在线| 欧美午夜丰满在线18影院| 国产精品美女网站| 午夜精品福利视频| 成人字幕网zmw| 欧美一区深夜视频| 亚洲最新中文字幕| 孩xxxx性bbbb欧美| 免费av一区二区| 久久久国产精品亚洲一区| 欧美日韩国内自拍| 米奇精品一区二区三区在线观看| 国产精品手机播放| 成人黄色生活片| 狠狠色狠狠色综合日日五| 亚洲美女av在线| 亚洲电影免费观看高清完整版| 国产视频精品自拍| 欧美精品一区二区三区国产精品| 在线性视频日韩欧美| 国内免费精品永久在线视频| 4438全国亚洲精品在线观看视频| 欧美高清性猛交| 国产精品激情av在线播放| 精品亚洲精品福利线在观看| 久久天天躁日日躁| 欧美亚洲国产日韩2020| 欧美大片大片在线播放| 久久成人亚洲精品| 亚洲91精品在线观看| 国产99视频在线观看| 91精品国产沙发| 最新69国产成人精品视频免费| 亚洲国产又黄又爽女人高潮的| 欧美激情网站在线观看| 国产精品久久久久久久久久久久久久| 亚洲xxxx妇黄裸体| 亚洲电影免费观看高清完整版| 欧美激情精品久久久久久| 精品女厕一区二区三区| 亚洲精品91美女久久久久久久| 国产精品日韩在线一区| 欧美激情二区三区| 亚洲图片在线综合| 久久久91精品国产一区不卡| 中文字幕精品在线视频| 国产日本欧美在线观看| 自拍偷拍亚洲欧美| 欧美在线一区二区视频| 色小说视频一区| 黑人巨大精品欧美一区二区| 久久深夜福利免费观看| 欧美日韩国产成人在线观看| 午夜剧场成人观在线视频免费观看| 亚洲精品国产综合久久| 欧美猛少妇色xxxxx| 亚洲国产精品va在线看黑人动漫|