http://blog.csdn.net/luman1991/article/details/52678559
基本類和接口
一箫津、javax.servlet.Servlet接口
- servlet抽象集是javax.servlet.Servlet接口专普,它規(guī)定了必須由Servlet類實(shí)現(xiàn)由servlet引擎識別和管理的方法集丽声。
- Servlet接口的基本目標(biāo)是提供生命期方法init()、service()和destroy()方法购撼。
servlet接口中的方法 - void init(ServletConfit config)throws ServletException 在servlet被載入后和實(shí)施服務(wù)前由servlet引擎進(jìn)行?次性調(diào)用摩疑。如果init()產(chǎn)生溢出UnavailableException吴侦,則 servle退出服務(wù)。
- ServletConfig getServletConfig() 返回傳遞到servlet的init()方法的ServletConfig對象
- void service(ServletRequest request, ServletResponse response)throws ServletException,IOException 處理request對象中描述的請求杂靶,使用response對象返回請求結(jié)果
- String getServletInfo() 返回描述servlet的一個(gè)字符串
- void destory() 當(dāng)servlet將要卸載時(shí)由servlet引擎調(diào)用
二梆惯、javax.servlet.GenericServlet類(協(xié)議無關(guān)版本)
- GenericServlet是一種與協(xié)議無關(guān)的servlet,是一種跟本不對請求提供服務(wù)的servlet吗垮,而是簡單地從init()方法啟動(dòng)后臺線程并在destory()中殺死垛吗。它可以用于模擬操作系統(tǒng)的端口監(jiān)控進(jìn)程。
- servlet API提供了Servlet接口的直接實(shí)現(xiàn)烁登,稱為GenericServlet怯屉。此類提供除了service()方法外所有接口中方法的缺省實(shí)現(xiàn)。這意味著通過簡單地?cái)U(kuò)展GenericServlte可以編寫一個(gè)基本的servlet饵沧。
- 除了Servlet接口外锨络,GenericServlet也實(shí)現(xiàn)了ServletConfig接口,處理初始化參數(shù)和servlet上下文狼牺,提供對授權(quán)傳遞到init()方法中的ServletConfig對象的方法羡儿。
GenericServlet類中的方法
- void destory() 編飛組成單詞“destory”的一個(gè)注冊入口
- String getInitParameter(String name) 返回具有指定名稱的初始化參數(shù)值。通過凋用config.getInitParameter(name)實(shí)現(xiàn)是钥。
- Enumeration getInitParameterNames() 返回此serv]et已編碼的所有初始化參數(shù)的?個(gè)枚舉類型值掠归。調(diào)用config.getInitParameterNames()獲得列表缅叠。如果未提供初始化參數(shù),則返回?個(gè)空的枚舉類型值(但不是null)
- ServletConfig getServletConfig() 返回傳遞到init()方法的ServletConfig對象
- ServletContext getServletContext() 返回在config對象中引用的ServletContext
- String getServletInfo() 返回空字符串
- void init(ServletConfig config)throws ServletException 在一實(shí)例變量中保存config對象虏冻。編寫組成單詞“init”的注冊入口,然后調(diào)用方法init()
- void init()throws ServletException 可以被跳過以處理servlet初始化.在config對象被保存后init(ServletConfig config)的結(jié)尾處自動(dòng)被調(diào)用.servlet作者經(jīng)常會(huì)忘記調(diào)用super.init(config)
- void log(String msg) 編寫注冊servlet的入口.為此調(diào)用servlet上下文的log()方法.servlet的名字被加到消息文本的開頭肤粱。
- void log(String msg,Throwable t) 編寫一個(gè)入口和servlet注冊的棧軌跡。此方法也是ServletContext中相應(yīng)方法的一個(gè)副本兄旬。
- abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎調(diào)用為請求對象描述的請求提供服務(wù)狼犯。這是GenericServlet中唯一的抽象方法。因此它也是唯一必須被子類所覆蓋的方法领铐。
- String getServletName() 返回在Web應(yīng)用發(fā)布描述器(web.xml)中指定的servlet的名字悯森。
三、javax.servlet.http.HttpServlet類(HTTP版本)
雖然servlet API允許擴(kuò)展到其它協(xié)議绪撵,但最終所有的servlet均在Web環(huán)境下實(shí)施操作瓢姻,只有幾種servlet直接擴(kuò)展了GenericServlet。對servlet更一般的是擴(kuò)展其HTTP子類HttpServlet音诈。
HttpServlet 類通過調(diào)用指定到HTTP請求方法的方法實(shí)現(xiàn)service()幻碱,亦即對DELETE、HEAD细溅、GET褥傍、OPTIONS、POST喇聊、PUT和 TRACE恍风,分別調(diào)用doDelete()、doHead()誓篱、doGet()朋贬、doOptions()、doPost()窜骄、doPut()和 doTrace()方法锦募,將請求和響應(yīng)對象置入其HTTP指定子類。
HttpServlet類中的方法
- Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP GET請求邻遏。輸入?yún)?shù)糠亩、HTTP頭標(biāo)和輸入流可從request對象、response頭標(biāo)和response對象的輸出流中獲得党远。
- Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP POST請求削解。輸入?yún)?shù)、HTTP頭標(biāo)和輸入流可從request對象沟娱、response頭標(biāo)和response對象的輸出流中獲得氛驮。
- Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP PUT請求。本方法中請求URI指出被載入的文件位置济似。
- Void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP DELETE請求矫废。請求URI指出資源被刪除盏缤。
- Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP OPTIONS請求。返回一個(gè)Allow響應(yīng)頭標(biāo)表明此servlet支持的HTTP方法蓖扑。一個(gè)servlet不需要覆蓋此方法唉铜,因?yàn)?HttpServlet方法已經(jīng)實(shí)現(xiàn)規(guī)范所需的功能。
- Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎調(diào)用用處理一個(gè)HTTP TRACE請求律杠。使得請求頭標(biāo)被反饋成響應(yīng)關(guān)標(biāo)潭流。一個(gè)servlet不需要覆蓋此方法,因?yàn)镠ttpServlet方法已經(jīng)實(shí)現(xiàn)HTTP規(guī)范所需的功能柜去。
- Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Service(Request request,Response response)調(diào)用的一個(gè)立即方法灰嫉,帶有指定HTTP請求和響應(yīng)。此方法實(shí)際上將請求導(dǎo)向doGet()嗓奢、doPost()等等讼撒。不應(yīng)該覆蓋此方法。
- Void service(Request request,Response response)throws ServletException,IOException 將請求和響應(yīng)對象置入其指定的HTTP子類股耽,并調(diào)用指定HTTP的service()方法根盒。
四、javax.servlet.ServletRequest類(協(xié)議無關(guān)版本)
ServletRequest接口封裝了客戶端請求的細(xì)節(jié)物蝙。它與協(xié)議無關(guān)炎滞,并有一個(gè)指定HTTP的子接口。
ServletRequest主要處理:
1.找到客戶端的主機(jī)名和IP地址
2.檢索請求參數(shù)
3.取得和設(shè)置屬性
4.取得輸入和輸出流
ServletRequest類中的方法
- Object getAttribute(String name) 返回具有指定名字的請求屬性诬乞,如果不存在則返回null厂榛。屬性可由servlet引擎設(shè)置或使用setAttribute()顯式加入。
- Enumeration getAttributeName() 返回請求中所有屬性名的枚舉丽惭。如果不存在屬性,則返回一個(gè)空的枚舉辈双。
- String getCharacteEncoding() 返回請求所用的字符編碼责掏。
- Int getContentLength() 指定輸入流的長度,如果未知?jiǎng)t返回-1湃望。
- ServletInputStream getInputStream()throws IOException 返回與請求相關(guān)的(二進(jìn)制)輸入流换衬。可以調(diào)用getInputStream()或getReader()方法之一证芭。
- String getParameter(String name) 返回指定輸入?yún)?shù)瞳浦,如果不存在,返回null废士。
- Enumeration getParameterName() 返回請求中所有參數(shù)名的一個(gè)可能為空的枚舉叫潦。
- String[] getParameterValues(String name) 返回指定輸入?yún)?shù)名的取值數(shù)組,如果取值不存在則返回null官硝。它在參數(shù)具有多個(gè)取值的情況下十分有用矗蕊。
- String get Protocol() 返回請求使用協(xié)議的名稱和版本短蜕。
- String getScheme() 返回請求URI的子串,但不包含第一個(gè)冒號前的內(nèi)容傻咖。
- String getServerName() 返回處理請求的服務(wù)器的主機(jī)名朋魔。
- String getServerPort() 返回接收主機(jī)正在偵聽的端口號。
- BufferedReader getReader()throws IOException 返回與請求相關(guān)輸入數(shù)據(jù)的一個(gè)字符解讀器卿操。此方法與getInputStream()只可分別調(diào)用警检,不能同時(shí)使用。
- String getRemoteAddr() 返回客戶端主機(jī)的數(shù)字型IP地址害淤。
- String getRemoteHost() 如果知道扇雕,返回客戶端主機(jī)名。
- void setAttribute(String name,Object obj) 以指定名稱保存請求中指定對象的引用筝家。
- void removeAttribute(String name) 從請求中刪除指定屬性
- Locale getLocale() 如果已知洼裤,返回客戶端的第一現(xiàn)場或者為null。
- Enumeration getLocales() 如果已知溪王,返回客戶端的第一現(xiàn)場的一個(gè)枚舉腮鞍,否則返回服務(wù)器第一現(xiàn)場。
- boolean isSecure() 如果請求使用了如HTTPS安全隧道莹菱,返回true
- RequestDispatcher getRequestDispatcher(String name) 返回指定源名稱的RequsetDispatcher對象移国。
五、javax.servlet.http.HttpServletRequest接口(HTTP版本)
HttpServletRequest類主要處理:
1.讀取和寫入HTTP頭標(biāo)
2.取得和設(shè)置cookies
3.取得路徑信息
4.標(biāo)識HTTP會(huì)話
HttpServletRequest接口中的方法
- String getAuthType() 如果servlet由一個(gè)鑒定方案所保護(hù)道伟,如HTTP基本鑒定迹缀,則返回方案名稱。
- String getContextPath() 返回指定servlet上下文(web應(yīng)用)的URL的前綴蜜徽。
- Cookie[] getCookies() 返回與請求相關(guān)cookie的一個(gè)數(shù)組祝懂。
- Long getDateHeader(String name) 將輸出轉(zhuǎn)換成適合構(gòu)建Date對象的long類型取值的getHeader()的簡化版。
- String getHeader(String name) 返回指定的HTTP頭標(biāo)指拘鞋。如果其由請求給出砚蓬,則名字應(yīng)為大小寫不敏感。
- Enumeration getHeaderNames() 返回請求給出的所有HTTP頭標(biāo)名稱的權(quán)舉值盆色。
- Enumeration getHeaders(String name) 返回請求給出的指定類型的所有HTTP頭標(biāo)的名稱的枚舉值灰蛙,它對具有多取值的頭標(biāo)非常有用。
- int getIntHeader(String name) 將輸出轉(zhuǎn)換為int取值的getHeader()的簡化版隔躲。
- String getMethod() 返回HTTP請求方法(例如GET摩梧、POST等等)
- String getPathInfo() 返回在URL中指定的任意附加路徑信息。
- String getPathTranslated() 返回在URL中指定的任意附加路徑信息宣旱,被子轉(zhuǎn)換成一個(gè)實(shí)際路徑仅父。
- String getQueryString() 返回查詢字符串,即URL中?后面的部份。
- String getRemoteUser() 如果用戶通過鑒定驾霜,返回遠(yuǎn)程用戶名案训,否則為null。
- String getRequestedSessionId() 返回客戶端的會(huì)話ID
- String getRequestURI() 返回URL中一部分粪糙,從“/”開始强霎,包括上下文,但不包括任意查詢字符串蓉冈。
- String getServletPath() 返回請求URI上下文后的子串
- HttpSession getSession() 調(diào)用getSession(true)的簡化版城舞。
- HttpSession getSession(boolean create) 返回當(dāng)前HTTP會(huì)話,如果不存在寞酿,則創(chuàng)建一個(gè)新的會(huì)話家夺,create參數(shù)為true。
- Principal getPrincipal() 如果用戶通過鑒定伐弹,返回代表當(dāng)前用戶的java.security.Principal對象拉馋,否則為null。
- boolean isRequestedSessionIdFromCookie() 如果請求的會(huì)話ID由一個(gè)Cookie對象提供惨好,則返回true煌茴,否則為false。
- boolean isRequestedSessionIdFromURL() 如果請求的會(huì)話ID在請求URL中解碼日川,返回true蔓腐,否則為false
- boolean isRequestedSessionIdValid() 如果客戶端返回的會(huì)話ID仍然有效,則返回true龄句。
- Boolean isUserInRole(String role) 如果當(dāng)前已通過鑒定用戶與指定角色相關(guān)回论,則返回true,如果不是或用戶未通過鑒定分歇,則返回false傀蓉。
六、javax.servlet.ServletResponse接口(協(xié)議無關(guān)版本)
ServletResponse對象將一個(gè)servlet生成的結(jié)果傳到發(fā)出請求的客戶端职抡。ServletResponse操作主要是作為輸出流及其內(nèi)容類型和長度的包容器僚害,它由servlet引擎創(chuàng)建.
ServletResponse接口中的方法
- void flushBuffer()throws IOException 發(fā)送緩存到客戶端的輸出內(nèi)容。因?yàn)镠TTP需要頭標(biāo)在內(nèi)容前被發(fā)送繁调,調(diào)用此方法發(fā)送狀態(tài)行和響應(yīng)頭標(biāo),以確認(rèn)請求靶草。
- int getBufferSize() 返回響應(yīng)使用的緩存大小蹄胰。如果緩存無效則返加0。
- String getCharacterEncoding() 返回響應(yīng)使用字符解碼的名字奕翔。除非顯式設(shè)置裕寨,否則為ISO-8859-1
- Locale getLocale() 返回響應(yīng)使用的現(xiàn)場。除非用setLocale()修改,否則缺省為服務(wù)器現(xiàn)場宾袜。
- OutputStream getOutputStream()throws IOException 返回用于將返回的二進(jìn)制輸出寫入客戶端的流捻艳,此方法和getWrite()方法二者只能調(diào)用其一。
- Writer getWriter()throws IOException 返回用于將返回的文本輸出寫入客戶端的一個(gè)字符寫入器庆猫,此方法和getOutputStream()二者只能調(diào)用其一认轨。
- boolean isCommitted() 如果狀態(tài)和響應(yīng)頭標(biāo)已經(jīng)被發(fā)回客戶端,則返回true月培,在響應(yīng)被確認(rèn)后發(fā)送響應(yīng)頭標(biāo)毫無作用嘁字。
- void reset() 清除輸出緩存及任何響應(yīng)頭標(biāo)。如果響應(yīng)已得到確認(rèn)杉畜,則引發(fā)事件IllegalStateException纪蜒。
- void setBufferSize(int nBytes) 設(shè)置響應(yīng)的最小緩存大小。實(shí)際緩存大小可以更大此叠,可以通過調(diào)用getBufferSize()得到纯续。如果輸出已被寫入,則產(chǎn)生IllegalStateException灭袁。
- void setContentLength(int length) 設(shè)置內(nèi)容體的長度猬错。
- void setContentType(String type) 設(shè)置內(nèi)容類型。在HTTP servlet中即設(shè)置Content-Type頭標(biāo)简卧。
- void setLocale(Locale locale) 設(shè)置響應(yīng)使用的現(xiàn)場兔魂。在HTTP servlet中,將對Content-Type頭標(biāo)取值產(chǎn)生影響举娩。
七析校、javax.servlet.http.HttpServletResponse接口(HTTP版本)
HttpServletResponse加入表示狀態(tài)碼、狀態(tài)信息和響應(yīng)頭標(biāo)的方法铜涉,它還負(fù)責(zé)對URL中寫入一Web頁面的HTTP會(huì)話ID進(jìn)行解碼智玻。
HttpServletResponse接口中的方法
- void addCookie(Cookie cookie) 將一個(gè)Set-Cookie頭標(biāo)加入到響應(yīng)。
- void addDateHeader(String name,long date) 使用指定日期值加入帶有指定名字(或代換所有此名字頭標(biāo))的響應(yīng)頭標(biāo)的方法芙代。
- void setHeader(String name,String value) 設(shè)置具有指定名字和取值的一個(gè)響應(yīng)頭標(biāo)吊奢。
- void addIntHeader(String name,int value) 使用指定整型值加入帶有指定名字的響應(yīng)頭標(biāo)(或代換此名字的所有頭標(biāo))。
- boolean containsHeader(String name) 如果響應(yīng)已包含此名字的頭標(biāo)纹烹,則返回true页滚。
- String encodeRedirectURL(String url) 如果客戶端不知道接受cookid,則向URL加入會(huì)話ID铺呵。第一種形式只對在sendRedirect()中使用的URL進(jìn)行調(diào)用裹驰。其他被編碼的 URLs應(yīng)被傳遞到encodeURL()
- String encodeURL(String url)
- void sendError(int status) 設(shè)置響應(yīng)狀態(tài)碼為指定值(可選的狀態(tài)信息)。HttpServleetResponse定義了一個(gè)完整的整數(shù)常量集合表示有效狀態(tài)值片挂。
- void sendError(int status,String msg)
- void setStatus(int status) 設(shè)置響應(yīng)狀態(tài)碼為指定指幻林。只應(yīng)用于不產(chǎn)生錯(cuò)誤的響應(yīng)贞盯,而錯(cuò)誤響應(yīng)使用sendError()。
八沪饺、javax.servlet.ServletContext接口
一個(gè)servlet上下文是servlet引擎提供用來服務(wù)于Web應(yīng)用的接口躏敢。Servlet上下文具有名字(它屬于Web應(yīng)用的名字)唯一映射到文件系統(tǒng)的一個(gè)目錄。
一個(gè)servlet可以通過ServletConfig對象的getServletContext()方法得到servlet上下文的引用整葡,如果servlet直接或間接調(diào)用子類GenericServlet件余,則可以使用getServletContext()方法。
Web應(yīng)用中servlet可以使用servlet上下文得到:
1.在調(diào)用期間保存和檢索屬性的功能掘宪,并與其他servlet共享這些屬性蛾扇。
2.讀取Web應(yīng)用中文件內(nèi)容和其他靜態(tài)資源的功能。
3.互相發(fā)送請求的方式魏滚。
4.記錄錯(cuò)誤和信息化消息的功能镀首。
ServletContext接口中的方法
- Object getAttribute(String name) 返回servlet上下文中具有指定名字的對象,或使用已指定名捆綁一個(gè)對象鼠次。從Web應(yīng)用的標(biāo)準(zhǔn)觀點(diǎn)看更哄,這樣的對象是全局對象,因?yàn)樗鼈兛梢员煌?servlet在另一時(shí)刻訪問腥寇〕婶妫或上下文中任意其他servlet訪問。
- void setAttribute(String name,Object obj) 設(shè)置servlet上下文中具有指定名字的對象赦役。
- Enumeration getAttributeNames() 返回保存在servlet上下文中所有屬性名字的枚舉麻敌。
- ServletContext getContext(String uripath) 返回映射到另一URL的servlet上下文。在同一服務(wù)器中URL必須是以“/”開頭的絕對路徑掂摔。
- String getInitParameter(String name) 返回指定上下文范圍的初始化參數(shù)值术羔。此方法與ServletConfig方法名稱不一樣,后者只應(yīng)用于已編碼的指定servlet乙漓。此方法應(yīng)用于上下文中所有的參數(shù)级历。
- Enumeration getInitParameterNames() 返回(可能為空)指定上下文范圍的初始化參數(shù)值名字的枚舉值。
- int getMajorVersion() 返回此上下文中支持servlet API級別的最大和最小版本號叭披。
- int getMinorVersion()
- String getMimeType(String fileName) 返回指定文件名的MIME類型寥殖。典型情況是基于文件擴(kuò)展名,而不是文件本身的內(nèi)容(它可以不必存在)涩蜘。如果MIME類型未知嚼贡,可以返回null。
- RequestDispatcher getNameDispatcher(String name) 返回具有指定名字或路徑的servlet或JSP的RequestDispatcher同诫。如果不能創(chuàng)建RequestDispatch粤策,返回null。如果指定路徑剩辟,必須心“/”開頭,并且是相對于servlet上下文的頂部。
RequestDispatcher getNameDispatcher(String path) - String getRealPath(String path) 給定一個(gè)URI贩猎,返回文件系統(tǒng)中URI對應(yīng)的絕對路徑熊户。如果不能進(jìn)行映射,返回null吭服。
- URL getResource(String path) 返回相對于servlet上下文或讀取URL的輸入流的指定絕對路徑相對應(yīng)的URL嚷堡,如果資源不存在則返回null。
- InputStream getResourceAsStream(String path)
- String getServerInfo() 返順servlet引擎的名稱和版本號艇棕。
- void log(String message)
- void log(String message,Throwable t) 將一個(gè)消息寫入servlet注冊蝌戒,如果給出Throwable參數(shù),則包含棧軌跡沼琉。
- void removeAttribute(String name) 從servlet上下文中刪除指定屬性北苟。
九、javax.servlet.http.HttpSession接口
HttpSession類似于哈希表的接口打瘪,它提供了setAttribute ()和getAttribute()方法存儲和檢索對象友鼻。HttpSession提供了一個(gè)會(huì)話ID關(guān)鍵字,一個(gè)參與會(huì)話行為的客戶端在同一會(huì)話的請求中存儲和返回它闺骚。servlet引擎查找適當(dāng)?shù)臅?huì)話對象彩扔,并使之對當(dāng)前請求可用。
HttpSession接口中的方法
- Object getAttribute(String name) 將會(huì)話中一個(gè)對象保存為指定名字僻爽,返回或刪除前面保存的此名稱對象虫碉。
- void setAttribute(String name,Object value)
- void removeAttribute(String name)
- Enumeration getAttributeName() 返回捆綁到當(dāng)前會(huì)話的所有屬性名的枚舉值。
- long getCreationTime() 返回表示會(huì)話創(chuàng)建和最后訪問日期和時(shí)間的一個(gè)長整型胸梆,該整型形式為java.util.Date()構(gòu)造器中使用的形式敦捧。
- long getLastAccessedTime()
- String getId() 返回會(huì)話ID,servlet引擎設(shè)置的一個(gè)唯一關(guān)鍵字乳绕。
- ing getMaxInactiveInterval() 如果沒有與客戶端發(fā)生交互绞惦,設(shè)置和返回會(huì)話存活的最大秒數(shù)。
- void setMasInactiveInterval(int seconds)
- void invalidate() 使得會(huì)話被終止洋措,釋放其中任意對象济蝉。
- boolean isNew() 如果客戶端仍未加入到會(huì)話,返回true菠发。當(dāng)會(huì)話首次被創(chuàng)建王滤,會(huì)話ID被傳入客戶端,但客戶端仍未進(jìn)行包含此會(huì)話ID的第二次請示時(shí)滓鸠,返回true雁乡。