<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • SUN認證考試知識點:java servlet生命周期

    時間:2024-09-25 13:59:50 SUN認證 我要投稿
    • 相關推薦

    SUN認證考試知識點:java servlet生命周期

      Servlet是使用 Java Servlet應用程序設計接口及相關類和方法的Java程序。它在Web服務器上或應用服務器上運行并擴展了該服務器的能力。Java Servlet對于Web服務器就好像Java Applet對于Web瀏覽器。Applet裝入Web瀏覽器并在Web瀏覽器內執行,而Servlet則是裝入Web服務器并在Web服務器內執行。 Java Servlet API 定義了Servlet和服務器之間的一個標準接口,這使得Servlet具有跨服務器平臺的特性。

    SUN認證考試知識點:java servlet生命周期

      Servlet通過創建一個框架擴展服務器的能力,采用請求-響應模式提供 Web服務。當客戶機發送請求至服務器時,服務器將請求信息發送給Servlet,Servlet生成響應內容并將其傳給Server,然后再由 Server將響應返回給客戶端。

      Servlet的功能

      Servlet的功能涉及范圍很廣。例如,Servlet可完成如下功能:

      創建并返回一個包含基于客戶請求性質的動態內容的完整的 HTML頁面。

      創建可嵌入到現有 HTML 頁面中的一部分 HTML 頁面(HTML 片段)。與其他服務器資源(文件、數據庫、Applet、Java應用程序等)進行通信。

      用多個客戶機處理連接,接受多個客戶機的輸入,并將結果廣播到多個客戶機上。例如,Servlet 可以是多參與者的游戲服務器。

      允許在單連接方式下傳送數據的情況下,在瀏覽器上打開服務器至Applet的新連接,并將該連接保持在打開狀態。允許客戶機和服務器簡單、高效地執行會話的情況下,Applet也可以啟動客戶瀏覽器和服務器之間的連接。可以通過定制協議或標準(如 IIOP)進行通信。

      對特殊的處理采用 MIME 類型過濾數據,例如圖像轉換和服務器端(包括SSI)。

      將定制的處理提供給所有服務器的標準例行程序。例如,Servlet 可以修改如何認證用戶。

      Java Servlet與現有網絡技術的差別

      那么Java Servlet與一些現有的網絡技術有什么具體的差別呢?

      Java Servlet與Applet之間的差別 從基本上來說,Servlet與 Applet 是截然相反的。Servlet可以被視為服務器方面的 Applet。Servlet在網絡服務器內運行而Applet在網絡瀏覽器內運行。瀏覽器提交一個請求執行Servlet的命令;而由于瀏覽器可直接命令Applet,所以它可以在運行時單機運行。

      Java Servlet與CGI之間的差別 與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。其中最大的區別是在性能方面。

      在傳統的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而使用Servlet時,服務器上僅有一個Java虛擬機在運行,只有當Servlet被調用時,它才被加載,且直到Servlet更改時,它才會被再次加載。在傳統CGI中,如果有N個并發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計算結果,保持數據庫連接的活動,等等。

      通過使用Servlet API,開發人員不必擔心服務器的內部運作方式。表格資料、服務器頭、cookies等皆可通過Servlet處理。另外,因為Servlet是用 Java寫的,能將其從一個服務器移到另一個服務器以供發布,同時不必擔心操作系統或服務器的類型。這一優點充分體現了Java"一次編寫,隨處運行"的優越特性。

      Servlet的生命周期

      Servlet的生命周期定義了一個Servlet如何被加載、初始化,以及它怎樣接收請求、響應請求、提供服務。

      在代碼中,Servlet生命周期由接口 javax.servlet.Servlet定義。所有的Java Servlet 必須直接或間接地實現javax.servlet.Servlet接口,這樣才能在Servlet Engine上運行。Servlet Engine提供network Service,響應MIME request,運行Servlet Container。 javax.servlet.Servlet接口定義了一些方法,在Servlet 的生命周期中,這些方法會在特定時間按照一定的順序被調用。如圖14-1所示。

      Servlet 如何被加載(Load)、被實例化(Instantiated)

      Servlet Engine 負責實例化和加載Servlet,這個過程可以在Servlet Engine 加載時執行,可以在Servlet 響應請求時執行,也可以在兩者之間的任何時候執行。

      Servlet如何被初始化(Initialized)

      Servlet Engine 加載好Servlet 后,必須要初始化它。初始化時Servlet 可以從數據庫里讀取初始數據,建立JDBC Connection,或者建立對其他有價值的資源的引用。

      在初始化階段,Init( )方法被調用。這個方法在javax.servlet.Serlet接口中定義。Init( )方法以一個Servlet 配置文件(ServletConfig 型)為參數。Servlet configuration 對象由Servlet Engine 實現,可以讓Servlet 從中讀取一些name-value對的參數值。ServletConfig對象還可以讓Servlet接受一個Servlet Context對象。

      Servlet 如何處理請求

      Servlet 被初始化以后,就處于能響應請求的就緒狀態。每個對Servlet 的請求由一個Servlet Request 對象代表。Servlet 給客戶端的響應由一個Servlet Response對象代表。當客戶端有一個請求時,Servlet Engine 將ServletRequest 和ServletResponse對象都轉發給Servlet,這兩個對象以參數的形式傳給Service方法。這個方法由 javax.servlet.Servlet定義并由具體的Servlet 實現。

      Servlet還可以實現 ServletRequest 和ServletResponse接口。ServletRequest接口可以讓Servlet 獲取客戶端請求中的參數,如form data、request信息、協議類型,等等。Servlet 可以從ServletInputStream流中讀取request 數據。ServletResponse接口允許Servlet設置response headers和status codes。實現這個接口可以使Servlet能訪問ServletOutputStream流用來向客戶端返回數據。

      Servlet如何被釋放

      Servlet Engine 沒有必要在Servlet 生命周期的每一段時間內都保持Servlet的狀態。Servlet Engine可以隨時隨意使用或釋放Servlet。因此,你不能依賴Servlet class或其成員存儲信息。當Servlet Engine判斷一個Servlet應當被釋放時(比如說Engine準備Shut down 或需要回收資源),Engine必須讓Servlet 能釋放其正在使用的任何資源,并保存持續性的狀態信息。這些可以通過調用Servlet的destroy方法實現。 在Servlet Engine 釋放一個Servlet 以前,必須讓其完成當前實例的service方法或是等到timeout(如果Engine定義了timeout)。當Engine釋放一個 Servlet以后,Engine將不能再將請求轉發給它,Engine必須徹底釋放該Servlet并將其標明為可回收的(給garbage collection)。

      在Servlet API中最重要的是Servlet interface。所有的Servlets執行這個interface的方式有很多種:或者是直接的,或者通過extending這個class執行它,如 HttpServlet。這個Servlet interface 提供并安排Servlet與客戶端聯系的方法。Servlet 編寫者可以在他們開發Servlet程序時提供更多一些或所有這樣的方法。

      當一個Servlet接收來自客戶端的調用請求時,它接收兩個對象:一個是 ServletRequest,另外一個是ServletResponse。這個ServletRequest class 概括從客戶端到服務器之間的聯系,而 ServletResponse class 概括從Servlet返回客戶端的聯系。

      ServletRequest interface 可以獲取到這樣一些信息,如由客戶端傳送的參數名稱,客戶端正在使用的協議,產生請求并且接收請求的服務器遠端主機名。它也提供獲取數據流的 Servlet、ServletInputStream,這些數據是客戶端引用中使用HTTP POST和PUT方法遞交的。一個ServletRequest的子類可以讓Servlet獲取更多的協議特性數據。

      例如,HttpServletRequest 包含獲取HTTP-specific頭部信息的方法。ServletResponse interface 給出相應客戶端的Servlet方法。它允許Servlet設置內容長度和回應的MIME類型,并且提供輸出流ServletOutputStream,通過編寫者可以發回相應數據。ServletResponse子類可以給出更多protocol-specific容量的信息。例如,HttpServletResponse 包含允許Servlet操作HTTP-specific頭部信息的方法。

      上面有關classes 和 interfaces的描述構成了一個基本的Servlet框架。HTTP Servlets有一些附加的可以提供session-tracking capabilities的方法。Servlet編寫者可以用這些API在有他人操作時維護Servlet與客戶端之間的狀態。

    【SUN認證考試知識點:java servlet生命周期】相關文章:

    sun java認證考試介紹03-19

    Sun Java認證考試科目03-19

    sun java認證考試報考指南03-19

    SUN JAVA認證介紹12-18

    sun認證考試:Java.io的使用01-08

    Sun認證Java開發員考試介紹03-25

    Sun Java認證考試教材教輔03-19

    Sun java認證考試真題答案09-25

    sun java認證報考指南03-08

    主站蜘蛛池模板: 日本精品一区二区三区在线观看| 中文字幕精品无码一区二区三区 | 亚洲国产精品无码久久青草| 国产精品成人观看视频国产奇米| 欧美日韩精品久久久久| 久久精品国产精品亚洲毛片| 国产精品99爱免费视频| 国产精品免费福利久久| 亚洲av无码成人精品区在线播放 | 国内精品久久久久久不卡影院| 国产精品igao视频网| 亚洲中文字幕无码久久精品1 | 国产欧美精品一区二区色综合 | 国产在线观看一区精品| 国产精品久久久久天天影视| 国产欧美久久久精品| 中文字幕一区二区三区日韩精品 | 国产亚洲精品精华液| 亚洲精品视频在线观看你懂的| 国产精品爱搞视频网站| 久久er热视频在这里精品| 精品国产三级a∨在线| 一级做a爰黑人又硬又粗免费看51社区国产精品视| 亚洲精品自产拍在线观看动漫| 国产三级久久久精品麻豆三级| 一本久久a久久精品vr综合| 精品无码久久久久久久动漫| 日本Aⅴ大伊香蕉精品视频 | 亚洲国产精品成人| 精品久久久久久国产三级| 91精品国产福利在线观看| 久久e热在这里只有国产中文精品99| 国产精品素人搭讪在线播放| 国产欧美精品AAAAAA片| 亚洲av永久无码精品网站| 亚洲一级Av无码毛片久久精品| 欧美精品人人做人人爱视频| 久久夜色撩人精品国产| 国产视频精品免费视频| 国产精品成人精品久久久| 国产精品亚洲不卡一区二区三区|