Java Servlet API說明文檔(2.1a版)(二)
發(fā)表時(shí)間:2024-06-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]API對(duì)象的說明\r 這一部分包含了對(duì)Java Servlet API的全部類和接口的詳細(xì)說明。這個(gè)說明與Javadoc API差不多,但是這份文檔提供了更多的信息。API包含了兩個(gè)軟件包,十二個(gè)接口和九個(gè)類。軟件包:javax.servlet 所包含的接口:RequestDispatc...
API對(duì)象的說明\r
這一部分包含了對(duì)Java Servlet API的全部類和接口的詳細(xì)說明。這個(gè)說明與Javadoc API差不多,但是這份文檔提供了更多的信息。
API包含了兩個(gè)軟件包,十二個(gè)接口和九個(gè)類。
軟件包:javax.servlet
所包含的接口:RequestDispatcher;Servlet;ServletConfig;ServletContext;ServletRequest;ServletResponse;SingleThreadModel。
所包含的類:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。
一、RequestDispatcher接口:
定義:
public interface RequestDispatcher;
定義一個(gè)對(duì)象,從客戶端接收請(qǐng)求,然后將它發(fā)給服務(wù)器的可用資源(例如Servlet、CGI、HTML文件、JSP文件)。Servlet引擎創(chuàng)建request dispatcher對(duì)象,用于封裝由一個(gè)特定的URL定義的服務(wù)器資源。
這個(gè)接口是專用于封裝Servlet的,但是一個(gè)Servlet引擎可以創(chuàng)建request dispatcher對(duì)象用于封裝任何類型的資源。
request dispatcher對(duì)象是由Servlet引擎建立的,而不是由Servlet開發(fā)者建立的。
方法
1、forward
public void forward(ServletRequest request, ServletReponse response)
throws ServletException, IOException;
被用來從這個(gè)Servlet向其它服務(wù)器資源傳遞請(qǐng)求。當(dāng)一個(gè)Servlet對(duì)響應(yīng)作了初步的處理,并要求其它的對(duì)象對(duì)此作出響應(yīng)時(shí),可以使用這個(gè)方法。
當(dāng)request對(duì)象被傳遞到目標(biāo)對(duì)象時(shí),請(qǐng)求的URL路徑和其他路徑參數(shù)會(huì)被調(diào)整為反映目標(biāo)對(duì)象的目標(biāo)URL路徑。
如果已經(jīng)通過響應(yīng)返回了一個(gè)ServletOutputStream對(duì)象或PrintWriter對(duì)象,這個(gè)方法將不能使用,否則,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
2、include
public void include(ServletRequest request, ServletResponse response)
throws ServletException, IOException
用來包括發(fā)送給其他服務(wù)器資源的響應(yīng)的內(nèi)容。本質(zhì)上來說,這個(gè)方法反映了服務(wù)器端的內(nèi)容。
請(qǐng)求對(duì)象傳到目標(biāo)對(duì)象后會(huì)反映調(diào)用請(qǐng)求的請(qǐng)求URL路徑和路徑信息。這個(gè)響應(yīng)對(duì)象只能調(diào)用這個(gè)Servlet的ServletOutputStream對(duì)象和PrintWriter對(duì)象。
一個(gè)調(diào)用include的Servlet不能設(shè)置頭域,如果這個(gè)Servlet調(diào)用了必須設(shè)置頭域的方法(例如cookie),這個(gè)方法將不能保證正常使用。作為一個(gè)Servlet開發(fā)者,你必須妥善地解決那些可能直接存儲(chǔ)頭域的方法。例如,即使你使用會(huì)話跟蹤,為了保證session的正常工作,你必須在一個(gè)調(diào)用include的Servlet之外開始你的session
二、Servlet接口。
定義\r
public interface Servlet
這個(gè)接口定義了一個(gè)Servlet:一個(gè)在Web服務(wù)器上繼承了這個(gè)功能的Java類。
方法
1、init
public void init(ServletConfig config) throws ServletException;
Servlet引擎會(huì)在Servlet實(shí)例化之后,置入服務(wù)之前精確地調(diào)用init方法。在調(diào)用service方法之前,init方法必須成功退出。
如果init方法拋出一個(gè)ServletException,你不能將這個(gè)Servlet置入服務(wù)中,如果init方法在超時(shí)范圍內(nèi)沒完成,我們也可以假定這個(gè)Servlet是不具備功能的,也不能置入服務(wù)中。
2、service
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException;
Servlet引擎調(diào)用這個(gè)方法以允許Servlet響應(yīng)請(qǐng)求。這個(gè)方法在Servlet未成功初始化之前無法調(diào)用。在Servlet被初始化之前,Servlet引擎能夠封鎖未決的請(qǐng)求。
在一個(gè)Servlet對(duì)象被卸載后,直到一個(gè)新的Servelt被初始化,Servlet引擎不能調(diào)用這個(gè)方法
3、destroy
public void destroy();
當(dāng)一個(gè)Servlet被從服務(wù)中去除時(shí),Servlet引擎調(diào)用這個(gè)方法。在這個(gè)對(duì)象的service方法所有線程未全部退出或者沒被引擎認(rèn)為發(fā)生超時(shí)操作時(shí),destroy方法不能被調(diào)用。
4、getServletConfig
public ServletConfig getServletConfig();
返回一個(gè)ServletConfig對(duì)象,作為一個(gè)Servlet的開發(fā)者,你應(yīng)該通過init方法存儲(chǔ)ServletConfig對(duì)象以便這個(gè)方法能返回這個(gè)對(duì)象。為了你的便利,GenericServlet在執(zhí)行這個(gè)接口時(shí),已經(jīng)這樣做了。
5、getServletInfo
public String getServletInfo();
允許Servlet向主機(jī)的Servlet運(yùn)行者提供有關(guān)它本身的信息。返回的字符串應(yīng)該是純文本格式而不應(yīng)有任何標(biāo)志(例如HTML,XML等)。
三、ServletConfig接口
定義\r
public interface ServletConfig
這個(gè)接口定義了一個(gè)對(duì)象,通過這個(gè)對(duì)象,Servlet引擎配置一個(gè)Servlet并且允許Servlet獲得一個(gè)有關(guān)它的ServletContext接口的說明。每一個(gè)ServletConfig對(duì)象對(duì)應(yīng)著一個(gè)唯一的Servlet。
方法
1、getInitParameter
public String getInitParameter(String name);
這個(gè)方法返回一個(gè)包含Servlet指定的初始化參數(shù)的String。如果這個(gè)參數(shù)不存在,返加空值。
2、getInitParameterNames
public Enumeration getInitParameterNames();
這個(gè)方法返回一個(gè)列表String對(duì)象,該對(duì)象包括Servlet的所有初始化參數(shù)名。如果Servlet沒有初始化參數(shù),getInitParameterNames返回一個(gè)空的列表。
3、getServletContext
public ServletContext getServletContext();
返回這個(gè)Servlet的ServletContext對(duì)象。
四、ServletContext接口
定義\r
public interface ServletContext
定義了一個(gè)Servlet的環(huán)境對(duì)象,通過這個(gè)對(duì)象,Servlet引擎向Servlet提供環(huán)境信息。
一個(gè)Servlet的環(huán)境對(duì)象必須至少與它所駐留的主機(jī)是一一對(duì)應(yīng)的。在一個(gè)處理多個(gè)虛擬主機(jī)的Servlet引擎中(例如,使用了HTTP1.1的主機(jī)頭域),每一個(gè)虛擬主機(jī)必須被視為一個(gè)單獨(dú)的環(huán)境。此外,Servlet引擎還可以創(chuàng)建對(duì)應(yīng)于一組Servlet的環(huán)境對(duì)象。
方法
1、getAttribute
public Object getAttribute(String name);
返回Servlet環(huán)境對(duì)象中指定的屬性對(duì)象。如果該屬性對(duì)象不存在,返回空值。這個(gè)方法允許訪問有關(guān)這個(gè)Servlet引擎的在該接口的其他方法中尚未提供的附加信息。
2、getAttributeNames
public Enumeration getAttributeNames();
返回一個(gè)Servlet環(huán)境對(duì)象中可用的屬性名的列表。
3、getContext
public ServletContext getContext(String uripath);
返回一個(gè)Servlet環(huán)境對(duì)象,這個(gè)對(duì)象包括了特定URI路徑的Servlets和資源,如果該路徑不存在,則返回一個(gè)空值。URI路徑格式是/dir/dir/filename.ext。
為了安全,如果通過這個(gè)方法訪問一個(gè)受限制的Servlet的環(huán)境對(duì)象,會(huì)返回一個(gè)空值。
4、getMajorVersion
public int getMajorVersion();
返回Servlet引擎支持的Servlet API的主版本號(hào)。例如對(duì)于2.1版,這個(gè)方法會(huì)返回一個(gè)整數(shù)2。
5、getMinorVersion
public int getMinorVersion();
返回Servlet引擎支持的Servlet API的次版本號(hào)。例如對(duì)于2.1版,這個(gè)方法會(huì)返回一個(gè)整數(shù)2。
6、getMimeType
public String getMimeType(String file);
返回指定文件的MIME類型,如果這種MIME類型未知,則返回一個(gè)空值。MIME類型是由Servlet引擎的配置決定的。
7、getRealPath
public String getRealPath(String path);
一個(gè)符合URL路徑格式的指定的虛擬路徑的格式是:/dir/dir/filename.ext。用這個(gè)方法,可以返回與一個(gè)符合該格式的虛擬路徑相對(duì)應(yīng)的真實(shí)路徑的String。這個(gè)真實(shí)路徑的格式應(yīng)該適合于運(yùn)行這個(gè)Servlet引擎的計(jì)算機(jī)(包括其相應(yīng)的路徑解析器)。
不管是什么原因,如果這一從虛擬路徑轉(zhuǎn)換成實(shí)際路徑的過程不能執(zhí)行,該方法將會(huì)返回一個(gè)空值。
8、getResource
public URL getResource(String uripath);
返回一個(gè)URL對(duì)象,該對(duì)象反映位于給定的URL地址(格式:/dir/dir/filename.ext)的Servlet環(huán)境對(duì)象已知的資源。無論URLStreamHandlers對(duì)于訪問給定的環(huán)境是不是必須的,Servlet引擎都必須執(zhí)行。如果給定的路徑的Servlet環(huán)境沒有已知的資源,該方法會(huì)返回一個(gè)空值。
這個(gè)方法和java.lang.Class的getResource方法不完全相同。java.lang.Class的getResource方法通過裝載類來尋找資源。而這個(gè)方法允許服務(wù)器產(chǎn)生環(huán)境變量給任何資源的任何Servlet,而不必依賴于裝載類、特定區(qū)域等等。
9、getResourceAsStream
public InputStream getResourceAsStream(String uripath);
返回一個(gè)InputStream對(duì)象,該對(duì)象引用指定的URL的Servlet環(huán)境對(duì)象的內(nèi)容。如果沒找到Servlet環(huán)境變量,就會(huì)返回空值,URL路徑應(yīng)該具有這種格式:/dir/dir/filename.ext。
這個(gè)方法是一個(gè)通過getResource方法獲得URL對(duì)象的方便的途徑。請(qǐng)注意,當(dāng)你使用這個(gè)方法時(shí),meta-information(例如內(nèi)容長(zhǎng)度、內(nèi)容類型)會(huì)丟失。
10、getRequestDispatcher
public RequestDispatcher getRequestDispatcher(String uripath);
如果這個(gè)指定的路徑下能夠找到活動(dòng)的資源(例如一個(gè)Servlet,JSP頁(yè)面,CGI等等)就返回一個(gè)特定URL的RequestDispatcher對(duì)象,否則,就返回一個(gè)空值,Servlet引擎負(fù)責(zé)用一個(gè)request dispatcher對(duì)象封裝目標(biāo)路徑。這個(gè)request dispatcher對(duì)象可以用來完全請(qǐng)求的傳送。
11、getServerInfo
public String getServerInfo();
返回一個(gè)String對(duì)象,該對(duì)象至少包括Servlet引擎的名字和版本號(hào)。
12、log
public void log(String msg);
public void log(String msg, Throwable t);
public void log(Exception exception, String msg); // 這種用法將被取消\r
寫指定的信息到一個(gè)Servlet環(huán)境對(duì)象的log文件中。被寫入的log文件由Servlet引擎指定,但是通常這是一個(gè)事件log。當(dāng)這個(gè)方法被一個(gè)異常調(diào)用時(shí),log中將包括堆棧跟蹤。
13、setAttribute
public void setAttribute(String name, Object o);
給予Servlet環(huán)境對(duì)象中你所指定的對(duì)象一個(gè)名稱。
14、removeAttribute
public void removeAttribute(String name);
從指定的Servlet環(huán)境對(duì)象中刪除一個(gè)屬性。
注:以下幾個(gè)方法將被取消\r
15、getServlet
public Servlet getServlet(String name) throws ServletException;
最初用來返回一個(gè)指定名稱的Servlet,如果沒找到就返回一個(gè)空值。如果這個(gè)Servlet能夠返回,這就意味著它已經(jīng)被初始化,而且已經(jīng)可以接受service請(qǐng)求。這是一個(gè)危險(xiǎn)的方法。當(dāng)調(diào)用這個(gè)方法時(shí),可能并不知道Servlet的狀態(tài),這就可能導(dǎo)致有關(guān)服務(wù)器狀態(tài)的問題。而允許一個(gè)Servlet訪問其他Servlet的這個(gè)方法也同樣的危險(xiǎn)。
現(xiàn)在這個(gè)方法返回一個(gè)空值,為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。
16、getServletNames
public Enumeration getServletNames();
最初用來返回一個(gè)String對(duì)象的列表,該列表表示了在這個(gè)Servlet環(huán)境下所有已知的Servlet對(duì)象名。這個(gè)列表總是包含這個(gè)Servlet自身。
基于與上一個(gè)方法同樣的理由,這也是一個(gè)危險(xiǎn)的方法。
現(xiàn)在這個(gè)方法返回一個(gè)空的列表。為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。
17、getServlets
public Enumeration getServlets();
最初用來返回在這個(gè)Servelet環(huán)境下所有已知的Servlet對(duì)象的列表。這個(gè)列表總是包含這個(gè)Servlet自身。
基于與getServlet方法同樣的理由,這也是一個(gè)危險(xiǎn)的方法。
現(xiàn)在這個(gè)方法返回一個(gè)空的列表。為了保持和以前版本的兼容性,現(xiàn)在這個(gè)方法還沒有被取消。在以后的API版本中,該方法將被取消。
五、ServletRequest接口
定義\r
public interface ServletRequest
定義一個(gè)Servlet引擎產(chǎn)生的對(duì)象,通過這個(gè)對(duì)象,Servlet可以獲得客戶端請(qǐng)求的數(shù)據(jù)。這個(gè)對(duì)象通過讀取請(qǐng)求體的數(shù)據(jù)提供包括參數(shù)的名稱、值和屬性以及輸入流的所有數(shù)據(jù)。
方法
1、getAttribute
public Object getAttribute(String name);
返回請(qǐng)求中指定屬性的值,如果這個(gè)屬性不存在,就返回一個(gè)空值。這個(gè)方法允許訪問一些不提供給這個(gè)接口中其他方法的請(qǐng)求信息以及其他Servlet放置在這個(gè)請(qǐng)求對(duì)象內(nèi)的數(shù)據(jù)。
2、getAttributeNames
public Enumeration getAttributeNames();
返回包含在這個(gè)請(qǐng)求中的所有屬性名的列表。
3、getCharacterEncoding
public String getCharacterEncoding();
返回請(qǐng)求中輸入內(nèi)容的字符編碼類型,如果沒有定義字符編碼類型就返回空值。
4、getContentLength
public int getContentLength();
請(qǐng)求內(nèi)容的長(zhǎng)度,如果長(zhǎng)度未知就返回-1。
5、getContentType
public String getContentType();
返回請(qǐng)求數(shù)據(jù)體的MIME類型,如果類型未知返回空值。
6、getInputStream
public ServletInputStream getInputStream() throws IOException;
返回一個(gè)輸入流用來從請(qǐng)求體讀取二進(jìn)制數(shù)據(jù)。如果在此之前已經(jīng)通過getReader方法獲得了要讀取的結(jié)果,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
7、getParameter
public String getParameter(String name);
以一個(gè)String返回指定的參數(shù)的值,如果這個(gè)參數(shù)不存在返回空值。例如,在一個(gè)HTTP Servlet中,這個(gè)方法會(huì)返回一個(gè)指定的查詢語句產(chǎn)生的參數(shù)的值或一個(gè)被提交的表單中的參數(shù)值。如果一個(gè)參數(shù)名對(duì)應(yīng)著幾個(gè)參數(shù)值,這個(gè)方法只能返回通過getParameterValues方法返回的數(shù)組中的第一個(gè)值。因此,如果這個(gè)參數(shù)有(或者可能有)多個(gè)值,你只能使用getParameterValues方法。
8、getParameterNames
public Enumeration getParameterNames();
返回所有參數(shù)名的String對(duì)象列表,如果沒有輸入?yún)?shù),該方法返回一個(gè)空值。
9、getParameterValues
public String[] getParameterValues(String name);
通過一個(gè)String對(duì)象的數(shù)組返回指定參數(shù)的值,如果這個(gè)參數(shù)不存在,該方法返回一個(gè)空值。
10、getProtocol
public String getProtocol();
返回這個(gè)請(qǐng)求所用的協(xié)議,其形式是協(xié)議/主版本號(hào).次版本號(hào)。例如對(duì)于一個(gè)HTTP1.0的請(qǐng)求,該方法返回HTTP/1.0。
11、getReader
public BufferedReader getReader() throws IOException;
這個(gè)方法返回一個(gè)buffered reader用來讀取請(qǐng)求體的實(shí)體,其編碼方式依照請(qǐng)求數(shù)據(jù)的編碼方式。如果這個(gè)請(qǐng)求的輸入流已經(jīng)被getInputStream調(diào)用獲得,這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
12、getRemoteAddr
public String getRemoteAddr();
返回發(fā)送請(qǐng)求者的IP地址。
13、getRemoteHost
public String getRemoteHost();
返回發(fā)送請(qǐng)求者的主機(jī)名稱。如果引擎不能或者選擇不解析主機(jī)名(為了改善性能),這個(gè)方法會(huì)直接返回IP地址。
14、getScheme
public String getScheme();
返回請(qǐng)求所使用的URL的模式。例如,對(duì)于一個(gè)HTTP請(qǐng)求,這個(gè)模式就是http。
15、getServerName
public String getServerName();
返回接收請(qǐng)求的服務(wù)器的主機(jī)名。
16、getServerPort
public int getServerPort();
返回接收請(qǐng)求的端口號(hào)。
17、setAttribute
public void setAttribute(String name, Object object);
這個(gè)方法在請(qǐng)求中添加一個(gè)屬性,這個(gè)屬性可以被其他可以訪問這個(gè)請(qǐng)求對(duì)象的對(duì)象(例如一個(gè)嵌套的Servlet)使用。
注:以下方法將被取消\r
getRealPath
public String getRealPath(String path);
返回與虛擬路徑相對(duì)應(yīng)的真實(shí)路徑,如果因?yàn)槟撤N原因,這一過程不能進(jìn)行,該方法將返回一個(gè)空值。
這個(gè)方法和ServletContext接口中的getRealPath方法重復(fù)。在2.1版中,ServletContext接口將闡明一個(gè)Servlet所能用的所有的路徑的映射。該方法執(zhí)行的結(jié)果將會(huì)與ServletContext中g(shù)etRealPath方法的結(jié)果完全一樣。
六、ServletResponse接口
定義\r
public interface ServletResponse
定義一個(gè)Servlet引擎產(chǎn)生的對(duì)象,通過這個(gè)對(duì)象,Servlet對(duì)客戶端的請(qǐng)求作出響應(yīng)。這個(gè)響應(yīng)應(yīng)該是一個(gè)MIME實(shí)體,可能是一個(gè)HTML頁(yè)、圖象數(shù)據(jù)或其他MIME的格式。
方法
1、getCharacterEncoding
public String getCharacterEncoding();
返回MIME實(shí)體的字符編碼。這個(gè)字符編碼可以是指定的類型,也可以是與請(qǐng)求頭域所反映的客戶端所能接受的字符編碼最匹配的類型。在HTTP協(xié)議中,這個(gè)信息被通過Accept-Charset傳送到Servlet引擎。
有關(guān)字符編碼和MIME的更多信息請(qǐng)參看RFC 2047。
2、getOutputStream
public ServletOutputStream getOutputStream() throws IOException;
返回一個(gè)記錄二進(jìn)制的響應(yīng)數(shù)據(jù)的輸出流。
如果這個(gè)響應(yīng)對(duì)象已經(jīng)調(diào)用getWriter,將會(huì)拋出IllegalStateException。
3、getWriter
public PrintWriter getWriter throws IOException;
這個(gè)方法返回一個(gè)PringWriter對(duì)象用來記錄格式化的響應(yīng)實(shí)體。如果要反映使用的字符編碼,必須修改響應(yīng)的MIME類型。在調(diào)用這個(gè)方法之前,必須設(shè)定響應(yīng)的content類型。
如果沒有提供這樣的編碼類型,會(huì)拋出一個(gè)UnsupportedEncodingException,如果這個(gè)響應(yīng)對(duì)象已調(diào)用getOutputStream,會(huì)拋出一個(gè)getOutputStream。
4、setContentLength
public void setContentLength(int length);
設(shè)置響應(yīng)的內(nèi)容的長(zhǎng)度,這個(gè)方法會(huì)覆蓋以前對(duì)內(nèi)容長(zhǎng)度的設(shè)定。
為了保證成功地設(shè)定響應(yīng)頭的內(nèi)容長(zhǎng)度,在響應(yīng)被提交到輸出流之前必須調(diào)用這個(gè)方法。
5、setContentType
public void setContentType(String type);
這個(gè)方法用來設(shè)定響應(yīng)的content類型。這個(gè)類型以后可能會(huì)在另外的一些情況下被隱式地修改,這里所說的另外的情況可能當(dāng)服務(wù)器發(fā)現(xiàn)有必要的情況下對(duì)MIME的字符設(shè)置。
為了保證成功地設(shè)定響應(yīng)頭的content類型,在響應(yīng)被提交到輸出流之前必須調(diào)用這個(gè)方法。
七、SingleThreadModel接口
定義\r
public interface SingleThreadModel;
這是一個(gè)空接口,它指定了系統(tǒng)如何處理對(duì)同一個(gè)Servlet的調(diào)用。如果一個(gè)Servlet被這個(gè)接口指定,那么在這個(gè)Servlet中的service方法中將不會(huì)有兩個(gè)線程被同時(shí)執(zhí)行。
Servlet可以通過維持一個(gè)各自獨(dú)立的Servlet實(shí)例池,或者通過只讓Servlet的service中只有一個(gè)線程的方法來實(shí)現(xiàn)這個(gè)保證。
八、GenericServlet類\r
public abstract class GenericServlet implements Servlet,
ServletConfig, Serializable;
這個(gè)類的存在使得編寫Servlet更加方便。它提供了一個(gè)簡(jiǎn)單的方案,這個(gè)方案用來執(zhí)行有關(guān)Servlet生命周期的方法以及在初始化時(shí)對(duì)ServletConfig對(duì)象和ServletContext對(duì)象進(jìn)行說明。
方法
1、destroy
public void destroy();
在這里destroy方法不做任何其他的工作。
2、getInitParameter
public String getInitParameter(String name);
這是一個(gè)簡(jiǎn)便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
3、getInitParameterNames
public Enumeration getInitParameterNames();
這是一個(gè)簡(jiǎn)便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
4、getServletConfig
public ServletConfig getServletConfig();
返回一個(gè)通過這個(gè)類的init方法產(chǎn)生的ServletConfig對(duì)象的說明。
5、getServletContext
public ServletContext getServletContext();
這是一個(gè)簡(jiǎn)便的途徑,它將會(huì)調(diào)用ServletConfig對(duì)象的同名的方法。
6、getServletInfo
public String getServletInfo();
返回一個(gè)反映Servlet版本的String。
7、init
public void init() throws ServletException;
public void init(ServletConfig config) throws ServletException;
init(ServletConfig config)方法是一個(gè)對(duì)這個(gè)Servlet的生命周期進(jìn)行初始化的簡(jiǎn)便的途徑。
init()方法是用來讓你對(duì)GenericServlet類進(jìn)行擴(kuò)充的,使用這個(gè)方法時(shí),你不需要存儲(chǔ)config對(duì)象,也不需要調(diào)用super.init(config)。
init(ServletConfig config)方法會(huì)存儲(chǔ)config對(duì)象然后調(diào)用init()。如果你重載了這個(gè)方法,你必須調(diào)用super.init(config),這樣GenericServlet類的其他方法才能正常工作。
8、log
public void log(String msg);
public void log(String msg, Throwable cause);
通過Servlet content對(duì)象將Servlet的類名和給定的信息寫入log文件中。
9、service
public abstract void service(ServletRequest request, ServletResponse
response) throws ServletException, IOException;
這是一個(gè)抽象的方法,當(dāng)你擴(kuò)展這個(gè)類時(shí),為了執(zhí)行網(wǎng)絡(luò)請(qǐng)求,你必須執(zhí)行它。
九、ServletInputStream類\r
定義\r
public abstract class ServletInputStream extends InputStream
這個(gè)類定義了一個(gè)用來讀取客戶端的請(qǐng)求信息的輸入流。這是一個(gè)Servlet引擎提供的抽象類。一個(gè)Servlet通過使用ServletRequest接口獲得了對(duì)一個(gè)ServletInputStream對(duì)象的說明。
這個(gè)類的子類必須提供一個(gè)從InputStream接口讀取有關(guān)信息的方法。
方法
1、readLine
public int readLine(byte[] b, int off, int len) throws IOException;
從輸入流的指定的偏移量開始將指定長(zhǎng)度的字節(jié)讀入到指定的數(shù)組中。如果該行所有請(qǐng)求的內(nèi)容都已被讀取,這個(gè)讀取的過程將結(jié)束。如果是遇到了新的一行,新的一行的首個(gè)字符也將被讀入到數(shù)組中。
十、ServletOutputStream類\r
定義\r
public abstract class ServletOutputStream extends OutputStream
這是一個(gè)由Servlet引擎使用的抽象類。Servlet通過使用ServletResponse接口的使用獲得了對(duì)一個(gè)這種類型的對(duì)象的說明。利用這個(gè)輸出流可以將數(shù)據(jù)返回到客戶端。
這個(gè)類的子類必須提供一個(gè)向OutputStream接口寫入有關(guān)信息的方法。
在這個(gè)接口中,當(dāng)一個(gè)刷新或關(guān)閉的方法被調(diào)用時(shí)。所有數(shù)據(jù)緩沖區(qū)的信息將會(huì)被發(fā)送到客戶端,也就是說響應(yīng)被提交了。請(qǐng)注意,關(guān)閉這種類型的對(duì)象時(shí)不一定要關(guān)閉隱含的socket流。
方法
1、print
public void print(String s) throws IOException;
public void print(boolean b) throws IOException;
public void print(char c) throws IOException;
public void print(int i) throws IOException;
public void print(long l) throws IOException;
public void print(float f) throws IOException;
public void print(double d) throws IOException;
輸出變量到輸出流中
2、println
public void println() throws IOException;
public void println(String s) throws IOException;
public void println(boolean b) throws IOException;
public void println(char c) throws IOException;
public void println(int i) throws IOException;
public void println(long l) throws IOException;
public void println(float f) throws IOException;
public void println(double d) throws IOException;
輸出變量到輸出流中,并增加一個(gè)回車換行符\r
十一、ServletException類\r
定義\r
public class ServletException extends Exception
當(dāng)Servlet遇到問題時(shí)拋出的一個(gè)異常。
構(gòu)造函數(shù)
public ServletException();
public ServletException(String message);
public ServletException(String message, Throwable cause);
public ServletException(Throwable cause);
構(gòu)造一個(gè)新的ServletException,如果這個(gè)構(gòu)造函數(shù)包括一個(gè)Throwable參數(shù),這個(gè)Throwable對(duì)象將被作為可能拋出這個(gè)異常的原因。
方法
1、getRootCause
public Throwable getRootCause();
如果配置了拋出這個(gè)異常的原因,這個(gè)方法將返回這個(gè)原因,否則返回一個(gè)空值。
十二、UnavailableException類\r
定義\r
public class UnavailableException extends ServletException
不論一個(gè)Servlet是永久地還是臨時(shí)地?zé)o效,都會(huì)拋出這個(gè)異常。Servlet會(huì)記錄這個(gè)異常以及Servlet引擎所要采取的相應(yīng)措施。
臨時(shí)的無效是指Servlet在某一時(shí)間由于一個(gè)臨時(shí)的問題而不能處理請(qǐng)求。例如,在另一個(gè)不同的應(yīng)用層的服務(wù)(可能是數(shù)據(jù)庫(kù))無法使用。這個(gè)問題可能會(huì)自行糾正或者需要采取其他的糾正措施。
永久的無效是指除非管理員采取措施,這個(gè)Servlet將不能處理客戶端的請(qǐng)求。例如,這個(gè)Servlet配置信息丟失或Servlet的狀態(tài)被破壞。
Servlet引擎可以安全地處理包括永久無效在內(nèi)的這兩種異常,但是對(duì)臨時(shí)無效的正常處理可以使得Servlet引擎更健壯。特別的,這時(shí)對(duì)Servlet的請(qǐng)求只是被阻止(或者是被延期)一段時(shí)間,這顯然要比在service自己重新啟動(dòng)前完全拒絕請(qǐng)求更為科學(xué)。
構(gòu)造函數(shù)
public UnavailableException(Servlet servlet, String message);
public UnavailableException(int seconds, Servlet servlet,
String message);
構(gòu)造一個(gè)包含指定的描述信息的新的異常。如果這個(gè)構(gòu)造函數(shù)有一個(gè)關(guān)于秒數(shù)的參數(shù),這將給出Servlet發(fā)生臨時(shí)無效后,能夠重新處理請(qǐng)求的估計(jì)時(shí)間。如果不包含這個(gè)參數(shù),這意味著這個(gè)Servlet永久無效。
方法
1、getServlet
public Servlet getServlet();
返回報(bào)告無效的Servlet。這被Servlet引擎用來識(shí)別受到影響的Servlet。
2、getUnavailableSeconds
public int getUnavailableSeconds();
返回Servlet預(yù)期的無效時(shí)間,如果這個(gè)Servlet是永久無效,返回-1。
3、isPermanent
public boolean isPermanent();
如果這個(gè)Servlet永久無效,返回布爾值true,指示必須采取一些管理行動(dòng)以使得這個(gè)Servlet可用。