12、log
public void log(String msg);
public void log(String msg, Throwable t);
public void log(Exception exception, String msg); // 這種用法將被取消
寫指定的信息到一個Servlet環境對象的log文件中.被寫入的log文件由Servlet引擎指定,但是通常這是一個事件log.當這個方法被一個異常調用時,log中將包括堆棧跟蹤.
13、setAttribute
public void setAttribute(String name, Object o);
給予Servlet環境對象中你所指定的對象一個名稱.
14、removeAttribute
public void removeAttribute(String name);
從指定的Servlet環境對象中刪除一個屬性.
註:以下幾個方法將被取消
15、getServlet
public Servlet getServlet(String name) throws ServletException;
最初用來返回一個指定名稱的Servlet,如果沒找到就返回一個空值.如果這個Servlet能夠返回,這就意味著它已經被初始化,而且已經可以接受 service請求.這是一個危險的方法.當調用這個方法時,可能並不知道Servlet的狀態,這就可能導致有關伺服器狀態的問題.而允許一個 Servlet訪問其他Servlet的這個方法也同樣的危險.
現在這個方法返回一個空值,為了保持和以前版本的兼容性,現在這個方法還沒有被取消.在以後的API版本中,該方法將被取消.
16、getServletNames
public Enumeration getServletNames();
最初用來返回一個String對象的列表,該列表表示了在這個Servlet環境下所有已知的Servlet對象名.這個列表總是包含這個Servlet自身.
基於與上一個方法同樣的理由,這也是一個危險的方法.
現在這個方法返回一個空的列表.為了保持和以前版本的兼容性,現在這個方法還沒有被取消.在以後的API版本中,該方法將被取消.
17、getServlets
public Enumeration getServlets();
最初用來返回在這個Servelet環境下所有已知的Servlet對象的列表.這個列表總是包含這個Servlet自身.
基於與getServlet方法同樣的理由,這也是一個危險的方法.
現在這個方法返回一個空的列表.為了保持和以前版本的兼容性,現在這個方法還沒有被取消.在以後的API版本中,該方法將被取消.
五、ServletRequest介面
定義
public interface ServletRequest
定義一個Servlet引擎產生的對象,通過這個對象,Servlet可以獲得客戶端請求的數據.這個對象通過讀取請求體的數據提供包括參數的名稱、值和屬性以及輸入流的所有數據.
方法
1、getAttribute
public Object getAttribute(String name);
返回請求中指定屬性的值,如果這個屬性不存在,就返回一個空值.這個方法允許訪問一些不提供給這個介面中其他方法的請求信息以及其他Servlet放置在這個請求對象內的數據.
2、getAttributeNames
public Enumeration getAttributeNames();
返回包含在這個請求中的所有屬性名的列表.
3、getCharacterEncoding
public String getCharacterEncoding();
返回請求中輸入內容的字元編碼類型,如果沒有定義字元編碼類型就返回空值.
4、getContentLength
public int getContentLength();
請求內容的長度,如果長度未知就返回-1.
5、getContentType
public String getContentType();
返回請求數據體的MIME類型,如果類型未知返回空值.
6、getInputStream
public ServletInputStream getInputStream() throws IOException;
返回一個輸入流用來從請求體讀取二進位數據.如果在此之前已經通過getReader方法獲得了要讀取的結果,這個方法會拋出一個IllegalStateException.
7、getParameter
public String getParameter(String name);
以一個String返回指定的參數的值,如果這個參數不存在返回空值.例如,在一個HTTP Servlet中,這個方法會返回一個指定的查詢語句產生的參數的值或一個被提交的表單中的參數值.如果一個參數名對應著幾個參數值,這個方法只能返回通過getParameterValues方法返回的數組中的第一個值.因此,如果這個參數有(或者可能有)多個值,你只能使用getParameterValues方法.
8、getParameterNames
public Enumeration getParameterNames();
返回所有參數名的String對象列表,如果沒有輸入參數,該方法返回一個空值.
9、getParameterValues
public String[] getParameterValues(String name);
通過一個String對象的數組返回指定參數的值,如果這個參數不存在,該方法返回一個空值.
10、getProtocol
public String getProtocol();
返回這個請求所用的協議,其形式是協議/主版本號.次版本號.例如對於一個HTTP1.0的請求,該方法返回HTTP/1.0.
11、getReader
public BufferedReader getReader() throws IOException;
這個方法返回一個buffered reader用來讀取請求體的實體,其編碼方式依照請求數據的編碼方式.如果這個請求的輸入流已經被getInputStream調用獲得,這個方法會拋出一個IllegalStateException.
12、getRemoteAddr
public String getRemoteAddr();
返回發送請求者的IP地址.
13、getRemoteHost
public String getRemoteHost();
返回發送請求者的主機名稱.如果引擎不能或者選擇不解析主機名(為了改善性能),這個方法會直接返回IP地址.
14、getScheme
public String getScheme();
返回請求所使用的URL的模式.例如,對於一個HTTP請求,這個模式就是http.
15、getServerName
public String getServerName();
返回接收請求的伺服器的主機名.
16、getServerPort
public int getServerPort();
返回接收請求的埠號.
17、setAttribute
public void setAttribute(String name, Object object);
這個方法在請求中添加一個屬性,這個屬性可以被其他可以訪問這個請求對象的對象(例如一個嵌套的Servlet)使用.
註:以下方法將被取消
getRealPath
public String getRealPath(String path);
返回與虛擬路徑相對應的真實路徑,如果某種原因,這一過程不能進行,該方法將返回一個空值.
這個方法和ServletContext介面中的getRealPath方法重複.在2.1版中,ServletContext介面將闡明一個 Servlet所能用的所有的路徑的映射.該方法執行的結果將會與ServletContext中getRealPath方法的結果完全一樣.
六、ServletResponse介面
定義
public interface ServletResponse
定義一個Servlet引擎產生的對象,通過這個對象,Servlet對客戶端的請求作出響應.這個響應應該是一個MIME實體,可能是一個HTML頁、圖象數據或其他MIME的格式.
方法
1、getCharacterEncoding
public String getCharacterEncoding();
返回MIME實體的字元編碼.這個字元編碼可以是指定的類型,也可以是與請求頭域所反映的客戶端所能接受的字元編碼最匹配的類型.在HTTP協議中,這個信息被通過Accept-Charset傳送到Servlet引擎.
有關字元編碼和MIME的更多信息請參看RFC 2047.
2、getOutputStream
public ServletOutputStream getOutputStream() throws IOException;
返回一個記錄二進位的響應數據的輸出流.
如果這個響應對象已經調用getWriter,將會拋出IllegalStateException.
3、getWriter
public PrintWriter getWriter throws IOException;
這個方法返回一個PringWriter對象用來記錄格式化的響應實體.如果要反映使用的字元編碼,必須修改響應的MIME類型.在調用這個方法之前,必須設定響應的content類型.
如果沒有提供這樣的編碼類型,會拋出一個UnsupportedEncodingException,如果這個響應對象已調用getOutputStream,會拋出一個getOutputStream.
4、setContentLength
public void setContentLength(int length);
設置響應的內容的長度,這個方法會覆蓋以前對內容長度的設定.
為了保證成功地設定響應頭的內容長度,在響應被提交到輸出流之前必須調用這個方法.
5、setContentType
public void setContentType(String type);
這個方法用來設定響應的content類型.這個類型以後可能會在另外的一些情況下被隱式地修改,這裡所說的另外的情況可能當伺服器發現有必要的情況下對MIME的字元設置.
為了保證成功地設定響應頭的content類型,在響應被提交到輸出流之前必須調用這個方法.
七、SingleThreadModel介面
定義
public interface SingleThreadModel;
這是一個空介面,它指定了系統如何處理對同一個Servlet的調用.如果一個Servlet被這個介面指定,那麼在這個Servlet中的service方法中將不會有兩個線程被同時執行.
Servlet可以通過維持一個各自獨立的Servlet實例池,或者通過只讓Servlet的service中只有一個線程的方法來實現這個保證.
八、GenericServlet類
public abstract class GenericServlet implements Servlet,
ServletConfig, Serializable;
這個類的存在是的編寫Servlet更加方便.它提供了一個簡單的方案,這個方案用來執行有關Servlet生命周期的方法以及在初始化時對ServletConfig對象和ServletContext對象進行說明.
方法
1、destroy
public void destroy();
在這裡destroy方法不做任何其他的工作.
2、getInitParameter
public String getInitParameter(String name);
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法.
3、getInitParameterNames
public Enumeration getInitParameterNames();
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法.
4、getServletConfig
public ServletConfig getServletConfig();
返回一個通過這個類的init方法產生的ServletConfig對象的說明.
5、getServletContext
public ServletContext getServletContext();
這是一個簡便的途徑,它將會調用ServletConfig對象的同名的方法.
6、getServletInfo
public String getServletInfo();
返回一個反映Servlet版本的String.
7、init
public void init() throws ServletException;
public void init(ServletConfig config) throws ServletException;
init(ServletConfig config)方法是一個對這個Servlet的生命周期進行初始化的簡便的途徑.
init()方法是用來讓你對GenericServlet類進行擴充的,使用這個方法時,你不需要存儲config對象,也不需要調用super.init(config).
init(ServletConfig config)方法會存儲config對象然後調用init().如果你重載了這個方法,你必須調用super.init(config),這樣GenericServlet類的其他方法才能正常工作.
8、log
public void log(String msg);
public void log(String msg, Throwable cause);
通過Servlet content對象將Servlet的類名和給定的信息寫入log文件中.
9、service
public abstract void service(ServletRequest request, ServletResponse
response) throws ServletException, IOException;
這是一個抽象的方法,當你擴展這個類時,為了執行網路請求,你必須執行它.
九、ServletInputStream類
定義
public abstract class ServletInputStream extends InputStream
這個類定義了一個用來讀取客戶端的請求信息的輸入流.這是一個Servlet引擎提供的抽象類.一個Servlet通過使用ServletRequest介面獲得了對一個ServletInputStream對象的說明.
這個類的子類必須提供一個從InputStream介面讀取有關信息的方法.
方法
1、readLine
public int readLine(byte[] b, int off, int len) throws IOException;
從輸入流的指定的偏移量開始將指定長度的位元組讀入到指定的數組中.如果該行所有請求的內容都已被讀取,這個讀取的過程將結束.如果是遇到了新的一行,新的一行的首個字元也將被讀入到數組中.
十、ServletOutputStream類
定義
public abstract class ServletOutputStream extends OutputStream
這是一個由Servlet引擎使用的抽象類.Servlet通過使用ServletResponse介面的使用獲得了對一個這種類型的對象的說明.利用這個輸出流可以將數據返回到客戶端.
這個類的子類必須提供一個向OutputStream介面寫入有關信息的方法.
在這個介面中,當一個刷新或關閉的方法被調用時.所有數據緩衝區的信息將會被發送到客戶端,也就是說響應被提交了.請注意,關閉這種類型的對象時不一定要關閉隱含的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;
輸出變數到輸出流中,並增加一個回車換行符
十一、ServletException類
定義
public class ServletException extends Exception
當Servlet遇到問題時拋出的一個異常.
構造函數
public ServletException();
public ServletException(String message);
public ServletException(String message, Throwable cause);
public ServletException(Throwable cause);
構造一個新的ServletException,如果這個構造函數包括一個Throwable參數,這個Throwable對象將被作為可能拋出這個異常的原因.
方法
1、getRootCause
public Throwable getRootCause();
如果配置了拋出這個異常的原因,這個方法將返回這個原因,否則返回一個空值.
十二、UnavailableException類
定義
public class UnavailableException extends ServletException
不論一個Servlet是永久地還是臨時地無效,都會拋出這個異常.Servlet會記錄這個異常以及Servlet引擎所要採取的相應措施.
臨時的無效是指Servlet在某一時間由於一個臨時的問題而不能處理請求.例如,在另一個不同的應用層的服務(可能是資料庫)無法使用.這個問題可能會自行糾正或者需要採取其他的糾正措施.
永久的無效是指除非管理員採取措施,這個Servlet將不能處理客戶端的請求.例如,這個Servlet配置信息丟失或Servlet的狀態被破壞.
Servlet 引擎可以安全地處理包括永久無效在內的這兩種異常,但是對臨時無效的正常處理可以是的Servlet引擎更健壯.特別的,這時對Servlet的請求只是被阻止(或者是被延期)一段時間,這顯然要比在service自己重新啟動前完全拒絕請求更為科學.
構造函數
public UnavailableException(Servlet servlet, String message);
public UnavailableException(int seconds, Servlet servlet,
String message);
構造一個包含指定的描述信息的新的異常.如果這個構造函數有一個關於秒數的參數,這將給出Servlet發生臨時無效后,能夠重新處理請求的估計時間.如果不包含這個參數,這意味著這個Servlet永久無效.
方法
1、getServlet
public Servlet getServlet();
返回報告無效的Servlet.這被Servlet引擎用來識別受到影響的Servlet.
2、getUnavailableSeconds
public int getUnavailableSeconds();
返回Servlet預期的無效時間,如果這個Servlet是永久無效,返回-1.
3、isPermanent
public boolean isPermanent();
如果這個Servlet永久無效,返回布爾值true,指示必須採取一些管理行動以是的這個Servlet可用.
軟體包:javax.servlet.http
所包含的介面:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingListener;HttpSessionContext.
所包含的類:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils.
[火星人 ] Java Servlet API中文說明文檔(2)已經有588次圍觀