偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Servlet定義的概述

開發(fā) 后端
Servlet的定義是什么呢?本文將向你介紹Servlet定義的功能、Servlet生命周期等等基本的概念,希望通過了解Servlet的定義使你能夠掌握這一技術(shù)。

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

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

Servlet的功能

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

創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的 HTML頁面。

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

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

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

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

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

Java Servlet與現(xiàn)有網(wǎng)絡技術(shù)的差別

那么Java Servlet與一些現(xiàn)有的網(wǎng)絡技術(shù)有什么具體的差別呢?

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

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

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

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

Servlet定義的生命周期

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

在代碼中,Servlet生命周期由接口javax.servlet.Servlet定義。所有的Java Servlet 必須直接或間接地實現(xiàn)javax.servlet.Servlet接口,這樣才能在Servlet Engine上運行。

Servlet Engine提供network Service,響應MIME request,運行Servlet Container。 javax.servlet.Servlet接口定義了一些方法,在Servlet 的生命周期中,這些方法會在特定時間按照一定的順序被調(diào)用。

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

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

Servlet如何被初始化(Initialized)

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

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

Servlet 如何處理請求

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

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

Servlet如何被釋放

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

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

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

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

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

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

以上就是Servlet定義相關(guān)的一些簡介,希望對你有所幫助。

【編輯推薦】

  1. 什么是Servlet以及常用Servlet API有哪些
  2. JSP Servlet實例之自動跳轉(zhuǎn)到出錯頁
  3. 優(yōu)化JSP Servlet應用程序八點雜談
  4. JSP開發(fā)中Servlet之導入事件驅(qū)動技術(shù)
  5. 什么是JSP以及和Servlet的比較
    責任編輯:仲衡 來源: JSP中文網(wǎng)
    相關(guān)推薦

    2009-07-06 09:23:51

    Servlet定義

    2009-07-06 13:48:53

    Servlet監(jiān)聽器

    2009-08-03 18:26:18

    C#定義接口成員

    2009-06-12 18:39:37

    Django簡介Django模型定義

    2010-01-07 17:41:19

    JSON定義法

    2010-07-26 17:20:53

    SQL Server

    2009-07-08 09:35:53

    Java ServleServlet 3.0

    2009-07-09 11:21:40

    Servlet注冊

    2009-07-07 10:16:42

    Servlet引擎

    2009-07-08 10:12:04

    Servlet Con

    2009-07-20 14:14:03

    PowerDesign

    2009-07-07 16:23:05

    Servlet容器

    2009-07-08 14:01:47

    Servlet容器

    2009-07-08 18:21:27

    2009-07-09 18:12:53

    Servlet源文件

    2009-07-08 15:59:55

    doFilter方法

    2009-07-08 14:22:36

    Servlet容器匹配過程

    2009-07-08 18:16:02

    Applet和Serv

    2009-07-08 16:19:41

    Servlet ConServlet Con

    2009-07-07 09:51:49

    Servlet實例
    點贊
    收藏

    51CTO技術(shù)棧公眾號