基本類(lèi)和接口
一、javax.servlet.Servlet接口
servlet抽象集是javax.servlet.Servlet接口,它規定了必須由Servlet類(lèi)實(shí)現由servlet引擎識別和管理的方法集。 Servlet接口的基本目標是提供生命期方法init()、service()和destroy()方法。
servlet接口中的方法 void init(ServletConfit config)throws ServletException 在servlet被載入后和實(shí)施服務(wù)前由servlet引擎進(jìn)行?次性調用。如果init()產(chǎn)生溢出UnavailableException,則servle退出服務(wù)。 ServletConfig getServletConfig() 返回傳遞到servlet的init()方法的ServletConfig對象 void service(ServletRequest request, ServletResponse response)throws ServletException,IOException 處理request對象中描述的請求,使用response對象返回請求結果 String getServletInfo() 返回描述servlet的一個(gè)字符串 void destory() 當servlet將要卸載時(shí)由servlet引擎調用
二、javax.servlet.GenericServlet類(lèi)(協(xié)議無(wú)關(guān)版本)
GenericServlet是一種與協(xié)議無(wú)關(guān)的servlet,是一種跟本不對請求提供服務(wù)的servlet,而是簡(jiǎn)單地從init()方法啟動(dòng)后臺線(xiàn)程并在destory()中殺死。它可以用于模擬操作系統的端口監控進(jìn)程。 servlet API提供了Servlet接口的直接實(shí)現,稱(chēng)為GenericServlet。此類(lèi)提供除了service()方法外所有接口中方法的缺省實(shí)現。這意味著(zhù)通過(guò)簡(jiǎn)單地擴展GenericServlte可以編寫(xiě)一個(gè)基本的servlet。 除了Servlet接口外,GenericServlet也實(shí)現了ServletConfig接口,處理初始化參數和servlet上下文,提供對授權傳遞到init()方法中的ServletConfig對象的方法。
GenericServlet類(lèi)中的方法 void destory() 編飛組成單詞“destory”的一個(gè)注冊入口 String getInitParameter(String name) 返回具有指定名稱(chēng)的初始化參數值。通過(guò)凋用config.getInitParameter(name)實(shí)現。 Enumeration getInitParameterNames() 返回此serv]et已編碼的所有初始化參數的?個(gè)枚舉類(lèi)型值。調用config.getInitParameterNames()獲得列表。如果未提供初始化參數,則返回?個(gè)空的枚舉類(lèi)型值(但不是null) ServletConfig getServletConfig() 返回傳遞到init()方法的ServletConfig對象 ServletContext getServletContext() 返回在config對象中引用的ServletContext String getServletInfo() 返回空字符串 void init(ServletConfig config)throws ServletException 在一實(shí)例變量中保存config對象。編寫(xiě)組成單詞“init”的注冊入口,然后調用方法init() void init()throws ServletException 可以被跳過(guò)以處理servlet初始化.在config對象被保存后init(ServletConfig config)的結尾處自動(dòng)被調用.servlet作者經(jīng)常會(huì )忘記調用super.init(config) void log(String msg) 編寫(xiě)注冊servlet的入口.為此調用servlet上下文的log()方法.servlet的名字被加到消息文本的開(kāi)頭。 void log(String msg,Throwable t) 編寫(xiě)一個(gè)入口和servlet注冊的棧軌跡。此方法也是ServletContext中相應方法的一個(gè)副本。 abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎調用為請求對象描述的請求提供服務(wù)。這是GenericServlet中唯一的抽象方法。因此它也是唯一必須被子類(lèi)所覆蓋的方法。 String getServletName() 返回在Web應用發(fā)布描述器(web.xml)中指定的servlet的名字。
三、javax.servlet.http.HttpServlet類(lèi)(HTTP版本)
雖然servlet API允許擴展到其它協(xié)議,但最終所有的servlet均在Web環(huán)境下實(shí)施操作,只有幾種servlet直接擴展了GenericServlet。對servlet更一般的是擴展其HTTP子類(lèi)HttpServlet。 HttpServlet類(lèi)通過(guò)調用指定到HTTP請求方法的方法實(shí)現service(),亦即對DELETE、HEAD、GET、OPTIONS、POST、PUT和TRACE,分別調用doDelete()、doHead()、doGet()、doOptions()、doPost()、doPut()和doTrace()方法,將請求和響應對象置入其HTTP指定子類(lèi)。
HttpServlet類(lèi)中的方法 Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP GET請求。輸入參數、HTTP頭標和輸入流可從request對象、response頭標和response對象的輸出流中獲得。 Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP POST請求。輸入參數、HTTP頭標和輸入流可從request對象、response頭標和response對象的輸出流中獲得。 Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP PUT請求。本方法中請求URI指出被載入的文件位置。 Void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP DELETE請求。請求URI指出資源被刪除。 Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP OPTIONS請求。返回一個(gè)Allow響應頭標表明此servlet支持的HTTP方法。一個(gè)servlet不需要覆蓋此方法,因為HttpServlet方法已經(jīng)實(shí)現規范所需的功能。 Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調用用處理一個(gè)HTTP TRACE請求。使得請求頭標被反饋成響應關(guān)標。一個(gè)servlet不需要覆蓋此方法,因為HttpServlet方法已經(jīng)實(shí)現HTTP規范所需的功能。 Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Service(Request request,Response response)調用的一個(gè)立即方法,帶有指定HTTP請求和響應。此方法實(shí)際上將請求導向doGet()、doPost()等等。不應該覆蓋此方法。 Void service(Request request,Response response)throws ServletException,IOException 將請求和響應對象置入其指定的HTTP子類(lèi),并調用指定HTTP的service()方法。
四、javax.servlet.ServletRequest類(lèi)(協(xié)議無(wú)關(guān)版本)
ServletRequest接口封裝了客戶(hù)端請求的細節。它與協(xié)議無(wú)關(guān),并有一個(gè)指定HTTP的子接口。 ServletRequest主要處理: 1.找到客戶(hù)端的主機名和IP地址 2.檢索請求參數 3.取得和設置屬性 4.取得輸入和輸出流
ServletRequest類(lèi)中的方法 Object getAttribute(String name) 返回具有指定名字的請求屬性,如果不存在則返回null。屬性可由servlet引擎設置或使用setAttribute()顯式加入。 Enumeration getAttributeName() 返回請求中所有屬性名的枚舉。如果不存在屬性,則返回一個(gè)空的枚舉。 String getCharacteEncoding() 返回請求所用的字符編碼。 Int getContentLength() 指定輸入流的長(cháng)度,如果未知則返回-1。 ServletInputStream getInputStream()throws IOException 返回與請求相關(guān)的(二進(jìn)制)輸入流??梢哉{用getInputStream()或getReader()方法之一。 String getParameter(String name) 返回指定輸入參數,如果不存在,返回null。 Enumeration getParameterName() 返回請求中所有參數名的一個(gè)可能為空的枚舉。 String[] getParameterValues(String name) 返回指定輸入參數名的取值數組,如果取值不存在則返回null。它在參數具有多個(gè)取值的情況下十分有用。 String get Protocol() 返回請求使用協(xié)議的名稱(chēng)和版本。 String getScheme() 返回請求URI的子串,但不包含第一個(gè)冒號前的內容。 String getServerName() 返回處理請求的服務(wù)器的主機名。 String getServerPort() 返回接收主機正在偵聽(tīng)的端口號。 BufferedReader getReader()throws IOException 返回與請求相關(guān)輸入數據的一個(gè)字符解讀器。此方法與getInputStream()只可分別調用,不能同時(shí)使用。 String getRemoteAddr() 返回客戶(hù)端主機的數字型IP地址。 String getRemoteHost() 如果知道,返回客戶(hù)端主機名。 void setAttribute(String name,Object obj) 以指定名稱(chēng)保存請求中指定對象的引用。 void removeAttribute(String name) 從請求中刪除指定屬性 Locale getLocale() 如果已知,返回客戶(hù)端的第一現場(chǎng)或者為null。 Enumeration getLocales() 如果已知,返回客戶(hù)端的第一現場(chǎng)的一個(gè)枚舉,否則返回服務(wù)器第一現場(chǎng)。 boolean isSecure() 如果請求使用了如HTTPS安全隧道,返回true RequestDispatcher getRequestDispatcher(String name) 返回指定源名稱(chēng)的RequsetDispatcher對象。
五、javax.servlet.http.HttpServletRequest接口(HTTP版本)
HttpServletRequest類(lèi)主要處理: 1.讀取和寫(xiě)入HTTP頭標 2.取得和設置cookies 3.取得路徑信息 4.標識HTTP會(huì )話(huà)。
HttpServletRequest接口中的方法 String getAuthType() 如果servlet由一個(gè)鑒定方案所保護,如HTTP基本鑒定,則返回方案名稱(chēng)。 String getContextPath() 返回指定servlet上下文(web應用)的URL的前綴。 Cookie[] getCookies() 返回與請求相關(guān)cookie的一個(gè)數組。 Long getDateHeader(String name) 將輸出轉換成適合構建Date對象的long類(lèi)型取值的getHeader()的簡(jiǎn)化版。 String getHeader(String name) 返回指定的HTTP頭標指。如果其由請求給出,則名字應為大小寫(xiě)不敏感。 Enumeration getHeaderNames() 返回請求給出的所有HTTP頭標名稱(chēng)的權舉值。 Enumeration getHeaders(String name) 返回請求給出的指定類(lèi)型的所有HTTP頭標的名稱(chēng)的枚舉值,它對具有多取值的頭標非常有用。 int getIntHeader(String name) 將輸出轉換為int取值的getHeader()的簡(jiǎn)化版。 String getMethod() 返回HTTP請求方法(例如GET、POST等等) String getPathInfo() 返回在URL中指定的任意附加路徑信息。 String getPathTranslated() 返回在URL中指定的任意附加路徑信息,被子轉換成一個(gè)實(shí)際路徑。 String getQueryString() 返回查詢(xún)字符串,即URL中?后面的部份。 String getRemoteUser() 如果用戶(hù)通過(guò)鑒定,返回遠程用戶(hù)名,否則為null。 String getRequestedSessionId() 返回客戶(hù)端的會(huì )話(huà)ID String getRequestURI() 返回URL中一部分,從“/”開(kāi)始,包括上下文,但不包括任意查詢(xún)字符串。 String getServletPath() 返回請求URI上下文后的子串 HttpSession getSession() 調用getSession(true)的簡(jiǎn)化版。 HttpSession getSession(boolean create) 返回當前HTTP會(huì )話(huà),如果不存在,則創(chuàng )建一個(gè)新的會(huì )話(huà),create參數為true。 Principal getPrincipal() 如果用戶(hù)通過(guò)鑒定,返回代表當前用戶(hù)的java.security.Principal對象,否則為null。 boolean isRequestedSessionIdFromCookie() 如果請求的會(huì )話(huà)ID由一個(gè)Cookie對象提供,則返回true,否則為false。 boolean isRequestedSessionIdFromURL() 如果請求的會(huì )話(huà)ID在請求URL中解碼,返回true,否則為false boolean isRequestedSessionIdValid() 如果客戶(hù)端返回的會(huì )話(huà)ID仍然有效,則返回true。 Boolean isUserInRole(String role) 如果當前已通過(guò)鑒定用戶(hù)與指定角色相關(guān),則返回true,如果不是或用戶(hù)未通過(guò)鑒定,則返回false。
六、javax.servlet.ServletResponse接口(協(xié)議無(wú)關(guān)版本)
ServletResponse對象將一個(gè)servlet生成的結果傳到發(fā)出請求的客戶(hù)端。ServletResponse操作主要是作為輸出流及其內容類(lèi)型和長(cháng)度的包容器,它由servlet引擎創(chuàng )建.
ServletResponse接口中的方法 void flushBuffer()throws IOException 發(fā)送緩存到客戶(hù)端的輸出內容。因為HTTP需要頭標在內容前被發(fā)送,調用此方法發(fā)送狀態(tài)行和響應頭標,以確認請求。 int getBufferSize() 返回響應使用的緩存大小。如果緩存無(wú)效則返加0。 String getCharacterEncoding() 返回響應使用字符解碼的名字。除非顯式設置,否則為ISO-8859-1 Locale getLocale() 返回響應使用的現場(chǎng)。除非用setLocale()修改,否則缺省為服務(wù)器現場(chǎng)。 OutputStream getOutputStream()throws IOException 返回用于將返回的二進(jìn)制輸出寫(xiě)入客戶(hù)端的流,此方法和getWrite()方法二者只能調用其一。 Writer getWriter()throws IOException 返回用于將返回的文本輸出寫(xiě)入客戶(hù)端的一個(gè)字符寫(xiě)入器,此方法和getOutputStream()二者只能調用其一。 boolean isCommitted() 如果狀態(tài)和響應頭標已經(jīng)被發(fā)回客戶(hù)端,則返回true,在響應被確認后發(fā)送響應頭標毫無(wú)作用。 void reset() 清除輸出緩存及任何響應頭標。如果響應已得到確認,則引發(fā)事件IllegalStateException。 void setBufferSize(int nBytes) 設置響應的最小緩存大小。實(shí)際緩存大小可以更大,可以通過(guò)調用getBufferSize()得到。如果輸出已被寫(xiě)入,則產(chǎn)生IllegalStateException。 void setContentLength(int length) 設置內容體的長(cháng)度。 void setContentType(String type) 設置內容類(lèi)型。在HTTP servlet中即設置Content-Type頭標。 void setLocale(Locale locale) 設置響應使用的現場(chǎng)。在HTTP servlet中,將對Content-Type頭標取值產(chǎn)生影響。
七、javax.servlet.http.HttpServletResponse接口(HTTP版本)
HttpServletResponse加入表示狀態(tài)碼、狀態(tài)信息和響應頭標的方法,它還負責對URL中寫(xiě)入一Web頁(yè)面的HTTP會(huì )話(huà)ID進(jìn)行解碼。
HttpServletResponse接口中的方法 void addCookie(Cookie cookie) 將一個(gè)Set-Cookie頭標加入到響應。 void addDateHeader(String name,long date) 使用指定日期值加入帶有指定名字(或代換所有此名字頭標)的響應頭標的方法。 void setHeader(String name,String value) 設置具有指定名字和取值的一個(gè)響應頭標。 void addIntHeader(String name,int value) 使用指定整型值加入帶有指定名字的響應頭標(或代換此名字的所有頭標)。 boolean containsHeader(String name) 如果響應已包含此名字的頭標,則返回true。 String encodeRedirectURL(String url) 如果客戶(hù)端不知道接受cookid,則向URL加入會(huì )話(huà)ID。第一種形式只對在sendRedirect()中使用的URL進(jìn)行調用。其他被編碼的URLs應被傳遞到encodeURL() String encodeURL(String url) void sendError(int status) 設置響應狀態(tài)碼為指定值(可選的狀態(tài)信息)。HttpServleetResponse定義了一個(gè)完整的整數常量集合表示有效狀態(tài)值。 void sendError(int status,String msg) void setStatus(int status) 設置響應狀態(tài)碼為指定指。只應用于不產(chǎn)生錯誤的響應,而錯誤響應使用sendError()。
八、javax.servlet.ServletContext接口
一個(gè)servlet上下文是servlet引擎提供用來(lái)服務(wù)于Web應用的接口。Servlet上下文具有名字(它屬于Web應用的名字)唯一映射到文件系統的一個(gè)目錄。 一個(gè)servlet可以通過(guò)ServletConfig對象的getServletContext()方法得到servlet上下文的引用,如果servlet直接或間接調用子類(lèi)GenericServlet,則可以使用getServletContext()方法。 Web應用中servlet可以使用servlet上下文得到: 1.在調用期間保存和檢索屬性的功能,并與其他servlet共享這些屬性。 2.讀取Web應用中文件內容和其他靜態(tài)資源的功能。 3.互相發(fā)送請求的方式。 4.記錄錯誤和信息化消息的功能。
ServletContext接口中的方法 Object getAttribute(String name) 返回servlet上下文中具有指定名字的對象,或使用已指定名捆綁一個(gè)對象。從Web應用的標準觀(guān)點(diǎn)看,這樣的對象是全局對象,因為它們可以被同一servlet在另一時(shí)刻訪(fǎng)問(wèn)?;蛏舷挛闹腥我馄渌鹲ervlet訪(fǎng)問(wèn)。 void setAttribute(String name,Object obj) 設置servlet上下文中具有指定名字的對象。 Enumeration getAttributeNames() 返回保存在servlet上下文中所有屬性名字的枚舉。 ServletContext getContext(String uripath) 返回映射到另一URL的servlet上下文。在同一服務(wù)器中URL必須是以“/”開(kāi)頭的絕對路徑。 String getInitParameter(String name) 返回指定上下文范圍的初始化參數值。此方法與ServletConfig方法名稱(chēng)不一樣,后者只應用于已編碼的指定servlet。此方法應用于上下文中所有的參數。 Enumeration getInitParameterNames() 返回(可能為空)指定上下文范圍的初始化參數值名字的枚舉值。 int getMajorVersion() 返回此上下文中支持servlet API級別的最大和最小版本號。 int getMinorVersion() String getMimeType(String fileName) 返回指定文件名的MIME類(lèi)型。典型情況是基于文件擴展名,而不是文件本身的內容(它可以不必存在)。如果MIME類(lèi)型未知,可以返回null。 RequestDispatcher getNameDispatcher(String name) 返回具有指定名字或路徑的servlet或JSP的RequestDispatcher。如果不能創(chuàng )建RequestDispatch,返回null。如果指定路徑,必須心“/”開(kāi)頭,并且是相對于servlet上下文的頂部。 RequestDispatcher getNameDispatcher(String path) String getRealPath(String path) 給定一個(gè)URI,返回文件系統中URI對應的絕對路徑。如果不能進(jìn)行映射,返回null。 URL getResource(String path) 返回相對于servlet上下文或讀取URL的輸入流的指定絕對路徑相對應的URL,如果資源不存在則返回null。 InputStream getResourceAsStream(String path) String getServerInfo() 返順servlet引擎的名稱(chēng)和版本號。 void log(String message) void log(String message,Throwable t) 將一個(gè)消息寫(xiě)入servlet注冊,如果給出Throwable參數,則包含棧軌跡。 void removeAttribute(String name) 從servlet上下文中刪除指定屬性。
九、javax.servlet.http.HttpSession接口
HttpSession類(lèi)似于哈希表的接口,它提供了setAttribute()和getAttribute()方法存儲和檢索對象。HttpSession提供了一個(gè)會(huì )話(huà)ID關(guān)鍵字,一個(gè)參與會(huì )話(huà)行為的客戶(hù)端在同一會(huì )話(huà)的請求中存儲和返回它。servlet引擎查找適當的會(huì )話(huà)對象,并使之對當前請求可用。
HttpSession接口中的方法 Object getAttribute(String name) 將會(huì )話(huà)中一個(gè)對象保存為指定名字,返回或刪除前面保存的此名稱(chēng)對象。 void setAttribute(String name,Object value) void removeAttribute(String name) Enumeration getAttributeName() 返回捆綁到當前會(huì )話(huà)的所有屬性名的枚舉值。 long getCreationTime() 返回表示會(huì )話(huà)創(chuàng )建和最后訪(fǎng)問(wèn)日期和時(shí)間的一個(gè)長(cháng)整型,該整型形式為java.util.Date()構造器中使用的形式。 long getLastAccessedTime() String getId() 返回會(huì )話(huà)ID,servlet引擎設置的一個(gè)唯一關(guān)鍵字。 ing getMaxInactiveInterval() 如果沒(méi)有與客戶(hù)端發(fā)生交互,設置和返回會(huì )話(huà)存活的最大秒數。 void setMasInactiveInterval(int seconds) void invalidate() 使得會(huì )話(huà)被終止,釋放其中任意對象。 boolean isNew() 如果客戶(hù)端仍未加入到會(huì )話(huà),返回true。當會(huì )話(huà)首次被創(chuàng )建,會(huì )話(huà)ID被傳入客戶(hù)端,但客戶(hù)端仍未進(jìn)行包含此會(huì )話(huà)ID的第二次請示時(shí),返回true。
| |