自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java Servlet API文檔實用說明

開發(fā) 后端
Java Servlet API文檔是很龐大的一個知識庫,本文是一份關(guān)于2.1版Java Servlet API的說明文檔,希望對你有幫助。

Java Servlet API文檔在實際開發(fā)中十分重要,這份Java Servlet API文檔1998年的11月份就已定稿,其中一些與技術(shù)關(guān)系不大的部分已被略去,有興趣的讀者可以從http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下載原文閱讀。

這是一份關(guān)于2.1版Java Servlet API的說明文檔,作為對這本文檔的補充,你可以到http://java.sun.com/products/servlet/index.html下面下載Javadoc格式的文檔。

Java Servlet API文檔誰需要

這份文檔描述了Java Servlet API的最新版本2.1版。所以,這本書對于Servlet的開發(fā)者及servlet引擎的開發(fā)者同樣適用。

Java Servlet API文檔的組成

Java Servlet API由兩個軟件包組成:一個是對應HTTP的軟件包,另一個是不對應HTTP的通用的軟件包。這兩個軟件包的同時存在使得Java Servlet API能夠適應將來的其他請求-響應的協(xié)議。

這份文檔以及剛才提及的Javadoc格式的文檔都描述了這兩個軟件包,Javadoc格式的文檔還描述了你應該如何使用這兩個軟件包中的所有方法。

Java Servlet API文檔有關(guān)規(guī)范

你也許對下面的這些Internet規(guī)范感興趣,這些規(guī)范將直接影響到Servlet API的發(fā)展和執(zhí)行。你可以從http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有這些RFC規(guī)范。

RFC 1738 統(tǒng)一資源定位器(URL)

RFC 1808 相關(guān)統(tǒng)一資源定位器

RFC 1945 超文本傳輸協(xié)議--HTTP/1.0

RFC 2045 多用途Internet郵件擴展(多用途網(wǎng)際郵件擴充協(xié)議(MIME))第一部分:Internet信息體格式

RFC 2046 多用途Internet郵件擴展(多用途網(wǎng)際郵件擴充協(xié)議(MIME))第二部分:媒體類型

RFC 2047 多用途網(wǎng)際郵件擴充協(xié)議(MIME)(多用途Internet郵件擴展)第三部分:信息標題擴展用于非ASCII文本

RFC 2048 多用途Internet郵件擴展(多用途網(wǎng)際郵件擴充協(xié)議(MIME))第四部分: 注冊步驟

RFC 2049 多用途Internet郵件擴展(多用途網(wǎng)際郵件擴充協(xié)議(MIME))第五部分:一致性標準和例子

RFC 2068 超文本傳輸協(xié)議 -- HTTP/1.1

RFC 2069 一個擴展HTTP:摘要訪問鑒定

RFC 2109 HTTP狀態(tài)管理機制

RFC 2145 HTTP 版本號的使用和解釋

RFC 2324 超文本Coffee Pot控制協(xié)議 (HTCPCP/1.0)

萬維網(wǎng)協(xié)會(http://www.w3.org)管理著這些協(xié)議的規(guī)范和執(zhí)行。

Java Servlet API文檔之Servlet的解析和載入

Servlet引擎解析并載入一個Servlet,這個過程可以發(fā)生在引擎啟動時,需要一個Servlet去響應請求時,以及在此之間的任何時候。

Servlet引擎利用Java類載入工具載入一個Servlet,Servlet引擎可以從一個本地的文件系統(tǒng)、一個遠程的文件系統(tǒng)以及網(wǎng)絡載入Servlet。

Java Servlet API文檔之Servlet的初始化

Servlet引擎載入Servlet后,Servlet引擎必須對Servlet進行初始化,在這一過程中,你可以讀取一些固定存儲的數(shù)據(jù)、初始化JDBC的連接以及建立與其他資源的連接。

在初始化過程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。這樣,Servlet可以對自己進行配置。

init()方法獲得了一個Servlet配置對象(ServletConfig)。這個對象在Servlet引擎中執(zhí)行,并允許Servlet通過它獲處相關(guān)參數(shù)。這個對象使得Servlet能夠訪問ServletContext對象。

Java Servlet API文檔之Servlet處理請求

Servlet被初始化之后,它已經(jīng)可以處理來自客戶端的請求,每一個來自客戶端的請求都被描述成一個ServletRequest對象,Servlet的響應被描述成一個ServletResponse對象。

當客戶端發(fā)出請求時,Servlet引擎?zhèn)鬟f給Servlet一個ServletRequest對象和一個ServletResponse對象,這兩個對象作為參數(shù)傳遞到service()方法中。

Servlet也可以執(zhí)行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有權(quán)使用客戶端發(fā)出的請求。Servlet可以通過ServletInputStream對象讀取請求信息。

ServletResponse接口允許Servlet建立響應頭和狀態(tài)代碼。通過執(zhí)行這個接口,Servlet有權(quán)使用ServletOutputStream類來向客戶端返回數(shù)據(jù)。

Java Servlet API文檔之實現(xiàn)多線程和映射

在多線程的環(huán)境下,Servlet必須能處理許多同時發(fā)生的請求。例外的情況是這個Servlet執(zhí)行了SingleThreadModel接口,如果是那樣的話,Servlet只能同時處理一個請求。

Servlet依照Servlet引擎的映射來響應客戶端的請求。一個映射對包括一個Servlet實例以及一個Servlet返回數(shù)據(jù)的URL,例如:HelloServlet with /hello/index.html。

然而,一個映射可能是由一個URL和許多Servlet實例組成,例如:一個分布式的Servlet引擎可能運行在不止一個的服務器中,這樣的話,每一個服務器中都可能有一個Servlet實例,以平衡進程的載入。作為一個Servlet的開發(fā)者,你不能假定一個Servlet只有一個實例。

Java Servlet API文檔之Servlet的卸載

Servlet引擎并不必需保證一個Servlet在任何時候或在服務開啟的任何時候都被載入。Servlet引擎可以自由的在任何時候使用或清除一個Servlet。因此,我們不能依賴一個類或?qū)嵗齺泶鎯χ匾男畔ⅰ?/P>

當Servlet引擎決定卸載一個Servlet時(例如,如果這個引擎被關(guān)閉或者需要讓資源),這個引擎必須允許Servlet釋放正在使用的資源并存儲有關(guān)資料。為了完成以上工作,引擎會調(diào)用Servlet的destroy()方法。

在卸載一個Servlet之前,Servlet引擎必須等待所有的service()方法完成或超時結(jié)束(Servlet引擎會對超時作出定義)。當一個Servlet被卸載時,引擎將不能給Servlet發(fā)送任何請求。引擎必須釋放Servlet并完成無用存儲單元的收集

Java Servlet API文檔之Servlet映射技術(shù)

作為一個Servlet引擎的開發(fā)者,你必須對于如何映射客戶端的請求到Servlet有大量的適應性。這份說明文檔不規(guī)定映射如何發(fā)生。但是,你必須能夠自由地運用下面的所有技術(shù):

映射一個Servlet到一個URL

例如,你可以指定一個特殊的Servlet它僅被來自/feedback/index.html的請求調(diào)用。

映射一個Servlet到以一個指定的目錄名開始的所有URL

例如,你可以映射一個Servlet到/catalog,這樣來自/catalog/、 /catalog/garden和/catalog/housewares/index.html的請求都會被映射到這個Servlet。但是來自 /catalogtwo 或/catalog.html的請求沒被映射。

映射一個Servlet到所有以一個特定的字段結(jié)尾的所有URL

例如,你可以映射一個來自于所有以in.thtml結(jié)尾的請求到一個特定的Servlet。

映射一個Servlet到一個特殊的URL /servlet/servlet_name。

例如,如果你建立了一個名叫l(wèi)istattributes的Servlet,你可以通過使用/servlet/listattributes來訪問這個Servlet。

通過類名調(diào)用Servlet

例如,如果Servlet引擎接收了來自/servlet/com.foo.servlet.MailServlet的請求,Servlet引擎會載入這個com.foo.servlet.MailServlet類,建立實例,并通過這個Servlet來處理請求。

Java Servlet API文檔之Servlet環(huán)境

ServletContext接口定義了一個Servlet環(huán)境對象,這個對象定義了一個在Servlet引擎上的Servlet的視圖。通過使用這個對象,Servlet可以記錄事件、得到資源并得到來自Servlet引擎的類(例如RequestDispatcher對象)。一個 Servlet只能運行在一個Servlet環(huán)境中,但是不同的Servlet可以在Servlet引擎上有不同的視圖。

如果Servlet引擎支持虛擬主機,每個虛擬主機有一個Servlet環(huán)境。一個Servlet環(huán)境不能在虛擬主機之間共享。

Servlet引擎能夠允許一個Servlet環(huán)境有它自己的活動范圍。

例如,一個Servlet環(huán)境是屬于bank應用的,它將被映射到/bank目錄下。在這種情況下,一個對getContext方法的調(diào)用會返回/bank的Servlet環(huán)境。

HTTP會話

HTTP是一個沒有狀態(tài)的協(xié)議。要建立一個有效的Web服務應用,你必須能夠識別一個連續(xù)的來自遠端的客戶機的唯一的請求。隨著時間的過去,發(fā)展了許多會話跟蹤的技術(shù),但是使用起來都比較麻煩。

Java Servlet API提供了一個簡單的接口,通過這個接口,Servlet引擎可以有效地跟蹤用戶的會話。

Java Servlet API文檔之建立Session

因為HTTP是一個請求-響應協(xié)議,一個會話在客戶機加入之前會被認為是一個新的會話。加入的意思是返回會話跟蹤信息到服務器中,指出會話已被建立。在客戶端加入之前,我們不能判斷下一個客戶端請求是目前會話的一部分。

在下面的情況下,Session會被認為是新的Session。

客戶端的Session在此之前還不知道

客戶端選擇不加入Session,例如,如果客戶端拒絕接收來自服務器的cookie

作為一個Servlet的開發(fā)者,你必須決定你的Web應用是否處理客戶機不加入或不能加入Session。服務器會在Web服務器或 Servlet規(guī)定的時間內(nèi)維持一個Session對象。當Session終止時,服務器會釋放Session對象以及所有綁定在Session上的對象。

Java Servlet API文檔之綁定對象到Session中

如果有助于你處理應用的數(shù)據(jù)需求,你也許需要綁定對象到Session中,你可以通過一個唯一的名字綁定任何的對象到Session中,這時,你需要使用HttpSession對象。任何綁定到Session上的對象都可以被處理同一會話的Servlet調(diào)用。

有些對象可能需要你知道什么時候會被放置到Session中或從Session中移開。你可以通過使用 HttpSessionBindingListener接口獲得這些信息。當你的應用存儲數(shù)據(jù)到Session中,或從Session中清除數(shù)據(jù),Servlet都會通過HttpSessionBindingListener檢杳什么類被綁定或被取消綁定。這個接口的方法會通報被綁定或被取消綁定的對象。

Java Servlet API文檔是很龐大的一個知識庫,那么其實常用的一些文檔內(nèi)容我們要在平時積極總結(jié)。

【編輯推薦】

  1. Servlet配置及開發(fā)運行測試
  2. 什么是Servlet以及常用Servlet API有哪些
  3. JSP Servlet實例之自動跳轉(zhuǎn)到出錯頁
  4. 如何提升Servlet和JSP應用程序的效率
  5. Servlet和JSP路徑詳細介紹
責任編輯:仲衡 來源: 天極
相關(guān)推薦

2009-07-09 17:47:35

Java Servle

2022-03-15 12:43:44

Web APIAPI

2009-07-08 11:37:32

Servlet API

2009-07-03 10:31:57

什么是ServletServlet API

2017-07-04 08:59:15

APIDevSecOps

2009-07-07 15:12:06

Servlet API

2009-07-08 10:02:41

Servlet 3.0

2011-03-18 10:16:12

iptablesman文檔中文

2011-12-22 12:37:17

JavaJFreeChart

2011-08-11 15:02:28

iOS目錄

2009-07-08 09:35:53

Java ServleServlet 3.0

2014-05-07 09:32:02

掃描文檔Linux實用教程

2009-07-06 15:47:11

Servlet API

2011-09-14 13:18:59

Android API

2011-09-14 11:31:26

Android API

2011-09-14 13:35:55

Android API

2012-03-08 09:44:41

編程

2011-09-14 14:08:23

Android API

2011-09-14 13:56:28

Android API

2011-09-14 13:09:06

Android API
點贊
收藏

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