軟件包:javax.servlet.http?
??????所包含的接口:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingListener;HttpSessionContext。
??????所包含的類:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。
??????一、HttpServletRequest接口
??????定義\
??????public?interface?HttpServletRequest?extends?ServletRequest;
??????用來(lái)處理一個(gè)對(duì)Servlet的HTTP格式的請(qǐng)求信息。
??????方法
??????1、getAuthType
??????public?String?getAuthType();
??????返回這個(gè)請(qǐng)求的身份驗(yàn)證模式。
??????2、getCookies
??????public?Cookie[]?getCookies();
??????返回一個(gè)數(shù)組,該數(shù)組包含這個(gè)請(qǐng)求中當(dāng)前的所有cookie。如果這個(gè)請(qǐng)求中沒(méi)有cookie,返回一個(gè)空數(shù)組。
??????3、getDateHeader
??????public?long?getDateHeader(String?name);
??????返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)反映自1970-1-1日(GMT)以來(lái)的精確到毫秒的長(zhǎng)整數(shù)。
??????如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????4、getHeader
??????public?String?getHeader(String?name);
??????返回一個(gè)請(qǐng)求頭域的值。(譯者注:與上一個(gè)方法不同的是,該方法返回一個(gè)字符串)
??????如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????5、getHeaderNames
??????public?Enumeration?getHeaderNames();
??????該方法返回一個(gè)String對(duì)象的列表,該列表反映請(qǐng)求的所有頭域名。
??????有的引擎可能不允許通過(guò)這種方法訪問(wèn)頭域,在這種情況下,這個(gè)方法返回一個(gè)空的列表。
??????6、getIntHeader
??????public?int?getIntHeader(String?name);
??????返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)整數(shù)。
??????如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????7、getMethod
??????public?String?getMethod();
??????返回這個(gè)請(qǐng)求使用的HTTP方法(例如:GET、POST、PUT)
??????8、getPathInfo
??????public?String?getPathInfo();
?????? 這個(gè)方法返回在這個(gè)請(qǐng)求的URL的Servlet路徑之后的請(qǐng)求URL的額外的路徑信息。如果這個(gè)請(qǐng)求URL包括一個(gè)查詢字符串,在返回值內(nèi)將不包括這個(gè)查詢字符串。這個(gè)路徑在返回之前必須經(jīng)過(guò)URL解碼。如果在這個(gè)請(qǐng)求的URL的Servlet路徑之后沒(méi)有路徑信息。這個(gè)方法返回空值。
??????9、getPathTranslated
??????public?String?getPathTranslated();
??????這個(gè)方法獲得這個(gè)請(qǐng)求的URL的Servlet路徑之后的額外的路徑信息,并將它轉(zhuǎn)換成一個(gè)真實(shí)的路徑。在進(jìn)行轉(zhuǎn)換前,這個(gè)請(qǐng)求的URL必須經(jīng)過(guò)URL解碼。如果在這個(gè)URL的Servlet路徑之后沒(méi)有附加路徑信息。這個(gè)方法返回空值。
??????10、getQueryString
??????public?String?getQueryString();
??????返回這個(gè)請(qǐng)求URL所包含的查詢字符串。一個(gè)查詢字串符在一個(gè)URL中由一個(gè)“?”引出。如果沒(méi)有查詢字符串,這個(gè)方法返回空值。
??????11、getRemoteUser
??????public?String?getRemoteUser
??????返回作了請(qǐng)求的用戶名,這個(gè)信息用來(lái)作HTTP用戶論證。
??????如果在請(qǐng)求中沒(méi)有用戶名信息,這個(gè)方法返回空值。
??????12、getRequestedSessionId
??????public?String?getRequestedSessionId();
??????返回這個(gè)請(qǐng)求相應(yīng)的session?id。如果由于某種原因客戶端提供的session?id是無(wú)效的,這個(gè)session?id將與在當(dāng)前session中的session?id不同,與此同時(shí),將建立一個(gè)新的session。
??????如果這個(gè)請(qǐng)求沒(méi)與一個(gè)session關(guān)聯(lián),這個(gè)方法返回空值。
??????13、getRequestURI
??????public?String?getRequestURI();
?????? 從HTTP請(qǐng)求的第一行返回請(qǐng)求的URL中定義被請(qǐng)求的資源的部分。如果有一個(gè)查詢字符串存在,這個(gè)查詢字符串將不包括在返回值當(dāng)中。例如,一個(gè)請(qǐng)求通過(guò) /catalog/books?id=1這樣的URL路徑訪問(wèn),這個(gè)方法將返回/catalog/books。這個(gè)方法的返回值包括了Servlet路徑和路徑信息。
??????如果這個(gè)URL路徑中的的一部分經(jīng)過(guò)了URL編碼,這個(gè)方法的返回值在返回之前必須經(jīng)過(guò)解碼。
??????14、getServletPath
??????public?String?getServletPath();
?????? 這個(gè)方法返回請(qǐng)求URL反映調(diào)用Servlet的部分。例如,一個(gè)Servlet被映射到/catalog/summer這個(gè)URL路徑,而一個(gè)請(qǐng)求使用了/catalog/summer/casual這樣的路徑。所謂的反映調(diào)用Servlet的部分就是指/catalog/summer。
??????如果這個(gè)Servlet不是通過(guò)路徑匹配來(lái)調(diào)用。這個(gè)方法將返回一個(gè)空值。
??????15、getSession
??????public?HttpSession?getSession();
??????public?HttpSession?getSession(boolean?create);
??????返回與這個(gè)請(qǐng)求關(guān)聯(lián)的當(dāng)前的有效的session。如果調(diào)用這個(gè)方法時(shí)沒(méi)帶參數(shù),那么在沒(méi)有session與這個(gè)請(qǐng)求關(guān)聯(lián)的情況下,將會(huì)新建一個(gè)session。如果調(diào)用這個(gè)方法時(shí)帶入了一個(gè)布爾型的參數(shù),只有當(dāng)這個(gè)參數(shù)為真時(shí),session才會(huì)被建立。
??????為了確保session能夠被完全維持。Servlet開發(fā)者必須在響應(yīng)被提交之前調(diào)用該方法。
??????如果帶入的參數(shù)為假,而且沒(méi)有session與這個(gè)請(qǐng)求關(guān)聯(lián)。這個(gè)方法會(huì)返回空值。
??????16、isRequestedSessionIdValid
??????public?boolean?isRequestedSessionIdValid();
??????這個(gè)方法檢查與此請(qǐng)求關(guān)聯(lián)的session當(dāng)前是不是有效。如果當(dāng)前請(qǐng)求中使用的session無(wú)效,它將不能通過(guò)getSession方法返回。
??????17、isRequestedSessionIdFromCookie
??????public?boolean?isRequestedSessionIdFromCookie();
??????如果這個(gè)請(qǐng)求的session?id是通過(guò)客戶端的一個(gè)cookie提供的,該方法返回真,否則返回假。
??????18、isRequestedSessionIdFromURL
??????public?boolean?isRequestedSessionIdFromURL();
??????如果這個(gè)請(qǐng)求的session?id是通過(guò)客戶端的URL的一部分提供的,該方法返回真,否則返回假。請(qǐng)注意此方法與isRequestedSessionIdFromUrl在URL的拼寫上不同。
??????以下方法將被取消\\r
??????19、isRequestedSessionIdFromUrl
??????public?boolean?isRequestedSessionIdFromUrl();
??????該方法被isRequestedSessionIdFromURL代替。
??????二、HttpServletResponse接口
??????定義\\r
??????public?interface?HttpServletResponse?extends?ServletResponse
??????描述一個(gè)返回到客戶端的HTTP回應(yīng)。這個(gè)接口允許Servlet程序員利用HTTP協(xié)議規(guī)定的頭信息。
??????成員變量
??????public?static?final?int?SC_CONTINUE?=?100;
??????public?static?final?int?SC_SWITCHING_PROTOCOLS?=?101;
??????public?static?final?int?SC_OK?=?200;
??????public?static?final?int?SC_CREATED?=?201;
??????public?static?final?int?SC_ACCEPTED?=?202;
??????public?static?final?int?SC_NON_AUTHORITATIVE_INFORMATION?=?203;
??????public?static?final?int?SC_NO_CONTENT?=?204;
??????public?static?final?int?SC_RESET_CONTENT?=?205;
??????public?static?final?int?SC_PARTIAL_CONTENT?=?206;
??????public?static?final?int?SC_MULTIPLE_CHOICES?=?300;
??????public?static?final?int?SC_MOVED_PERMANENTLY?=?301;
??????public?static?final?int?SC_MOVED_TEMPORARILY?=?302;
??????public?static?final?int?SC_SEE_OTHER?=?303;
??????public?static?final?int?SC_NOT_MODIFIED?=?304;
??????public?static?final?int?SC_USE_PROXY?=?305;
??????public?static?final?int?SC_BAD_REQUEST?=?400;
??????public?static?final?int?SC_UNAUTHORIZED?=?401;
??????public?static?final?int?SC_PAYMENT_REQUIRED?=?402;
??????public?static?final?int?SC_FORBIDDEN?=?403;
??????public?static?final?int?SC_NOT_FOUND?=?404;
??????public?static?final?int?SC_METHOD_NOT_ALLOWED?=?405;
??????public?static?final?int?SC_NOT_ACCEPTABLE?=?406;
??????public?static?final?int?SC_PROXY_AUTHENTICATION_REQUIRED?=?407;
??????public?static?final?int?SC_REQUEST_TIMEOUT?=?408;
??????public?static?final?int?SC_CONFLICT?=?409;
??????public?static?final?int?SC_GONE?=?410;
??????public?static?final?int?SC_LENGTH_REQUIRED?=?411;
??????public?static?final?int?SC_PRECONDITION_FAILED?=?412;
??????public?static?final?int?SC_REQUEST_ENTITY_TOO_LARGE?=?413;
??????public?static?final?int?SC_REQUEST_URI_TOO_LONG?=?414;
??????public?static?final?int?SC_UNSUPPORTED_MEDIA_TYPE?=?415;
??????public?static?final?int?SC_INTERNAL_SERVER_ERROR?=?500;
??????public?static?final?int?SC_NOT_IMPLEMENTED?=?501;
??????public?static?final?int?SC_BAD_GATEWAY?=?502;
??????public?static?final?int?SC_SERVICE_UNAVAILABLE?=?503;
??????public?static?final?int?SC_GATEWAY_TIMEOUT?=?504;
??????public?static?final?int?SC_HTTP_VERSION_NOT_SUPPORTED?=?505;
??????以上HTTP產(chǎn)狀態(tài)碼是由HTTP/1.1定義的。
??????方法
??????1、addCookie
??????public?void?addCookie(Cookie?cookie);
??????在響應(yīng)中增加一個(gè)指定的cookie。可多次調(diào)用該方法以定義多個(gè)cookie。為了設(shè)置適當(dāng)?shù)念^域,該方法應(yīng)該在響應(yīng)被提交之前調(diào)用。
??????2、containsHeader
??????public?boolean?containsHeader(String?name);
??????檢查是否設(shè)置了指定的響應(yīng)頭。
??????3、encodeRedirectURL
??????public?String?encodeRedirectURL(String?url);
??????對(duì)sendRedirect方法使用的指定URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。之所以提供這個(gè)附加的編碼方法,是因?yàn)樵趓edirect的情況下,決定是否對(duì)URL進(jìn)行編碼的規(guī)則和一般情況有所不同。所給的URL必須是一個(gè)絕對(duì)URL。相對(duì)URL不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
??????所有提供給sendRedirect方法的URL都應(yīng)通過(guò)這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
??????4、encodeURL
??????public?String?encodeURL(String?url);
?????? 對(duì)包含session?ID的URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。Servlet引擎必須提供URL編碼方法,因?yàn)樵谟行┣闆r下,我們將不得不重寫URL,例如,在響應(yīng)對(duì)應(yīng)的請(qǐng)求中包含一個(gè)有效的session,但是這個(gè)session不能被非URL的(例如cookie)的手段來(lái)維持。
??????所有提供給Servlet的URL都應(yīng)通過(guò)這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
??????5、sendError
??????public?void?sendError(int?statusCode)?throws?IOException;
??????public?void?sendError(int?statusCode,?String?message)?throws
?????????IOException;
??????用給定的狀態(tài)碼發(fā)給客戶端一個(gè)錯(cuò)誤響應(yīng)。如果提供了一個(gè)message參數(shù),這將作為響應(yīng)體的一部分被發(fā)出,否則,服務(wù)器會(huì)返回錯(cuò)誤代碼所對(duì)應(yīng)的標(biāo)準(zhǔn)信息。
??????調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
??????6、sendRedirect
??????public?void?sendRedirect(String?location)?throws?IOException;
??????使用給定的路徑,給客戶端發(fā)出一個(gè)臨時(shí)轉(zhuǎn)向的響應(yīng)(SC_MOVED_TEMPORARILY)。給定的路徑必須是絕對(duì)URL。相對(duì)URL將不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
??????這個(gè)方法必須在響應(yīng)被提交之前調(diào)用。調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
??????7、setDateHeader
??????public?void?setDateHeader(String?name,?long?date);
??????用一個(gè)給定的名稱和日期值設(shè)置響應(yīng)頭,這里的日期值應(yīng)該是反映自1970-1-1日(GMT)以來(lái)的精確到毫秒的長(zhǎng)整數(shù)。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????8、setHeader
??????public?void?setHeader(String?name,?String?value);
??????用一個(gè)給定的名稱和域設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????9、setIntHeader
??????public?void?setIntHeader(String?name,?int?value);
??????用一個(gè)給定的名稱和整形值設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????10、setStatus
??????public?void?setStatus(int?statusCode);
??????這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????以下的幾個(gè)方法將被取消\
??????11、encodeRedirectUrl
??????public?String?encodeRedirectUrl(String?url);
??????該方法被encodeRedirectURL取代。?
??????12、encodeUrl
??????public?String?encodeUrl(String?url);
??????該方法被encodeURL取代。?
??????13、setStatus
??????public?void?setStatus(int?statusCode,?String?message);
??????這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。如果提供了一個(gè)message,它也將會(huì)被作為響應(yīng)體的一部分被發(fā)送。
??????三、HttpSession接口
??????定義\
??????public?interface?HttpSession
??????這個(gè)接口被Servlet引擎用來(lái)實(shí)現(xiàn)在HTTP客戶端和HTTP會(huì)話兩者的關(guān)聯(lián)。這種關(guān)聯(lián)可能在多外連接和請(qǐng)求中持續(xù)一段給定的時(shí)間。session用來(lái)在無(wú)狀態(tài)的HTTP協(xié)議下越過(guò)多個(gè)請(qǐng)求頁(yè)面來(lái)維持狀態(tài)和識(shí)別用戶。
??????一個(gè)session可以通過(guò)cookie或重寫URL來(lái)維持。
??????方法
??????1、getCreationTime
??????public?long?getCreationTime();
??????返回建立session的時(shí)間,這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
??????2、getId
??????public?String?getId();
??????返回分配給這個(gè)session的標(biāo)識(shí)符。一個(gè)HTTP?session的標(biāo)識(shí)符是一個(gè)由服務(wù)器來(lái)建立和維持的唯一的字符串。
??????3、getLastAccessedTime
??????public?long?getLastAccessedTime();
??????返回客戶端最后一次發(fā)出與這個(gè)session有關(guān)的請(qǐng)求的時(shí)間,如果這個(gè)session是新建立的,返回-1。這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
??????4、getMaxInactiveInterval
??????public?int?getMaxInactiveInterval();
??????返加一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長(zhǎng)時(shí)間。在這個(gè)時(shí)間之后,Servlet引擎可能被Servlet引擎終止。如果這個(gè)session不會(huì)被終止,這個(gè)方法返回-1。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????5、getValue
??????public?Object?getValue(String?name);
??????返回一個(gè)以給定的名字綁定到session上的對(duì)象。如果不存在這樣的綁定,返回空值。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????6、getValueNames
??????public?String[]?getValueNames();
??????以一個(gè)數(shù)組返回綁定到session上的所有數(shù)據(jù)的名稱。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????7、invalidate
??????public?void?invalidate();
??????這個(gè)方法會(huì)終止這個(gè)session。所有綁定在這個(gè)session上的數(shù)據(jù)都會(huì)被清除。并通過(guò)HttpSessionBindingListener接口的valueUnbound方法發(fā)出通告。
??????8、isNew
??????public?boolean?isNew();
?????? 返回一個(gè)布爾值以判斷這個(gè)session是不是新的。如果一個(gè)session已經(jīng)被服務(wù)器建立但是還沒(méi)有收到相應(yīng)的客戶端的請(qǐng)求,這個(gè)session將被認(rèn)為是新的。這意味著,這個(gè)客戶端還沒(méi)有加入會(huì)話或沒(méi)有被會(huì)話公認(rèn)。在他發(fā)出下一個(gè)請(qǐng)求時(shí)還不能返回適當(dāng)?shù)膕ession認(rèn)證信息。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????9、putValue
??????public?void?putValue(String?name,?Object?value);
??????以給定的名字,綁定給定的對(duì)象到session中。已存在的同名的綁定會(huì)被重置。這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueBound方法。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????10、removeValue
??????public?void?removeValue(String?name);
??????取消給定名字的對(duì)象在session上的綁定。如果未找到給定名字的綁定的對(duì)象,這個(gè)方法什么出不做。?這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueUnbound方法。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????11、setMaxInactiveInterval
??????public?int?setMaxInactiveInterval(int?interval);
??????設(shè)置一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長(zhǎng)時(shí)間。
??????以下這個(gè)方法將被取消\
??????12、getSessionContext
??????public?HttpSessionContext?getSessionContext();
??????返回session在其中得以保持的環(huán)境變量。這個(gè)方法和其他所有HttpSessionContext的方法一樣被取消了。
??????四、HttpSessionBindingListener接口
??????定義\
??????public?interface?HttpSessionBindingListener
??????這個(gè)對(duì)象被加入到HTTP的session中,執(zhí)行這個(gè)接口會(huì)通告有沒(méi)有什么對(duì)象被綁定到這個(gè)HTTP?session中或被從這個(gè)HTTP?session中取消綁定。
??????方法
??????1、valueBound
??????public?void?valueBound(HttpSessionBindingEvent?event);
??????當(dāng)一個(gè)對(duì)象被綁定到session中,調(diào)用此方法。HttpSession.putValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。
??????2、valueUnbound
??????public?void?valueUnbound(HttpSessionBindingEvent?event);
??????當(dāng)一個(gè)對(duì)象被從session中取消綁定,調(diào)用此方法。HttpSession.removeValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。
??????五、HttpSessionContext接口
??????定義\
??????此接口將被取消\
??????public?interface?HttpSessionContext
??????這個(gè)對(duì)象是與一組HTTP?session關(guān)聯(lián)的單一的實(shí)體。
??????這個(gè)接口由于安全的原因被取消,它出現(xiàn)在目前的版本中僅僅是為了兼容性的原因。這個(gè)接口的方法將模擬以前的版本的定義返回相應(yīng)的值。
??????方法
??????1、getSession
??????public?HttpSession?getSession(String?sessionId);
??????當(dāng)初用來(lái)返回與這個(gè)session?id相關(guān)的session。現(xiàn)在返回空值。
??????2、getIds
??????public?Enumeration?getIds();
??????當(dāng)初用來(lái)返回這個(gè)環(huán)境下所有session?id的列表。現(xiàn)在返回空的列表。
??????六、Cookie類\
??????定義\
??????public?class?Cookie?implements?Cloneable
??????這個(gè)類描述了一個(gè)cookie,有關(guān)cookie的定義你可以參照Netscape?Communications?Corporation的說(shuō)明,也可以參照RFC?2109。
??????構(gòu)造函數(shù)
??????public?Cookie(String?name,?String?value);
??????用一個(gè)name-value對(duì)定義一個(gè)cookie。這個(gè)name必須能被HTTP/1.1所接受。
??????以字符$開頭的name被RFC?2109保留。
??????給定的name如果不能被HTTP/1.1所接受,該方法拋出一個(gè)IllegalArgumentException。
??????方法
??????1、getComment
??????public?String?getComment();
??????返回描述這個(gè)cookie目的的說(shuō)明,如果未定義這個(gè)說(shuō)明,返回空值。
??????2、getDomain
??????public?String?getDomain();
??????返回這個(gè)cookie可以出現(xiàn)的區(qū)域,如果未定義區(qū)域,返回空值。
??????3、getMaxAge
??????public?int?getMaxAge();
??????這個(gè)方法返回這個(gè)cookie指定的最長(zhǎng)存活時(shí)期。如果未定義這個(gè)最長(zhǎng)存活時(shí)期,該方法返回-1。
??????4、getName
??????public?String?getName();
??????該方法返回cookie名。
??????5、getPath
??????public?String?getPath();
??????返回這個(gè)cookie有效的所有URL路徑的前綴,如果未定義,返回空值。
??????6、getSecure
??????public?boolean?getSecure();
??????如果這個(gè)cookie只通過(guò)安全通道傳輸返回真,否則返回假。
??????7、getValue
??????public?String?getValue();
??????該方法返回cookie的值。
??????8、getVersion
??????public?int?getVersion();
??????返回cookie的版本。版本1由RFC?2109解釋。版本0由Netscape?Communications?Corporation的說(shuō)明解釋。新構(gòu)造的cookie默認(rèn)使用版本0。
??????9、setComment
??????public?void?setComment(String?purpose);
??????如果一個(gè)用戶將這個(gè)cookie提交給另一個(gè)用戶,必須通過(guò)這個(gè)說(shuō)明描述這個(gè)cookie的目的。版本0不支持這個(gè)屬性。
??????10、setDomain
??????public?void?setDomain(String?pattern);
??????這個(gè)方法設(shè)置cookie的有效域的屬性。這個(gè)屬性指定了cookie可以出現(xiàn)的區(qū)域。一個(gè)有效域以一個(gè)點(diǎn)開頭(.foo.com),這意味著在指定的域名解析系統(tǒng)的區(qū)域中(可能是 www.foo.com但不是a.b.foo.com)的主機(jī)可以看到這個(gè)cookie。默認(rèn)情況是,cookie只能返回保存它的主機(jī)。
??????11、setMaxAge
??????public?void?setMaxAge(int?expiry);
??????這個(gè)方法設(shè)定這個(gè)cookie的最長(zhǎng)存活時(shí)期。在該存活時(shí)期之后,cookie會(huì)被終目。負(fù)數(shù)表示這個(gè)cookie不會(huì)生效,0將從客戶端刪除這個(gè)cookie。
?????????12、setPath
??????public?void?setPath(String?uri);
??????這個(gè)方法設(shè)置cookie的路徑屬性。客戶端只能向以這個(gè)給定的路徑String開頭的路徑返回cookie。
??????13、setSecure
??????public?void?setSecure(boolean?flag);
??????指出這個(gè)cookie只能通過(guò)安全通道(例如HTTPS)發(fā)送。只有當(dāng)產(chǎn)生這個(gè)cookie的服務(wù)器使用安全協(xié)議發(fā)送這個(gè)cookie值時(shí)才能這樣設(shè)置。
??????14、setValue
??????public?void?setValue(String?newValue);
??????設(shè)置這個(gè)cookie的值,對(duì)于二進(jìn)制數(shù)據(jù)采用BASE64編碼。
??????版本0不能使用空格、{}、()、=、,、“”、/、?、@、:以及;。
??????15、setVersion
??????public?void?setVersion(int?v);
??????設(shè)置cookie的版本號(hào)
??????七、HttpServlet類\
??????定義\
??????public?class?HttpServlet?extends?GenericServlet?implements?
?????????Serializable
??????這是一個(gè)抽象類,用來(lái)簡(jiǎn)化HTTP?Servlet寫作的過(guò)程。它是GenericServlet類的擴(kuò)充,提供了一個(gè)處理HTTP協(xié)議的框架。
??????在這個(gè)類中的service方法支持例如GET、POST這樣的標(biāo)準(zhǔn)的HTTP方法。這一支持過(guò)程是通過(guò)分配他們到適當(dāng)?shù)姆椒ǎɡ鏳oGet、doPost)來(lái)實(shí)現(xiàn)的。
??????方法
??????1、doDelete
??????protected?void?doDelete(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?DELETE操作。這個(gè)操作允許客戶端請(qǐng)求從服務(wù)器上刪除URL。這一操作可能有負(fù)面影響,對(duì)此用戶就負(fù)起責(zé)任。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理DELETE請(qǐng)求時(shí),你必須重載這一方法。
??????2、doGet
??????protected?void?doGet(HttpServletRequest?request,?
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?GET操作。這個(gè)操作允許客戶端簡(jiǎn)單地從一個(gè)HTTP服務(wù)器“獲得”資源。對(duì)這個(gè)方法的重載將自動(dòng)地支持HEAD方法。
??????GET操作應(yīng)該是安全而且沒(méi)有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。
??????3、doHead
??????protected?void?doHead(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?HEAD操作。默認(rèn)的情況是,這個(gè)操作會(huì)按照一個(gè)無(wú)條件的GET方法來(lái)執(zhí)行,該操作不向客戶端返回任何數(shù)據(jù),而僅僅是返回包含內(nèi)容長(zhǎng)度的頭信息。
??????與GET操作一樣,這個(gè)操作應(yīng)該是安全而且沒(méi)有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
??????這個(gè)方法的默認(rèn)執(zhí)行結(jié)果是自動(dòng)處理HTTP?HEAD操作,這個(gè)方法不需要被一個(gè)子類執(zhí)行。?
??????4、doOptions
??????protected?void?doOptions(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?OPTION操作。這個(gè)操作自動(dòng)地決定支持哪一種HTTP方法。例如,一個(gè)Servlet寫了一個(gè)HttpServlet的子類并重載了doGet方法,doOption會(huì)返回下面的頭:
??????Allow:?GET,HEAD,TRACE,OPTIONS
??????你一般不需要重載這個(gè)方法。
??????5、doPost
??????protected?void?doPost(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?POST操作。這個(gè)操作包含請(qǐng)求體的數(shù)據(jù),Servlet應(yīng)該按照他行事。
??????這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購(gòu)物。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理POST操作時(shí),你必須在HttpServlet的子類中重載這一方法。
??????6、doPut
??????protected?void?doPut(HttpServletRequest?request,?
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?PUT操作。這個(gè)操作類似于通過(guò)FTP發(fā)送文件。
??????這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購(gòu)物。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理PUT操作時(shí),你必須在HttpServlet的子類中重載這一方法。
??????7、doTrace
??????protected?void?doTrace(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?TRACE操作。這個(gè)操作的默認(rèn)執(zhí)行結(jié)果是產(chǎn)生一個(gè)響應(yīng),這個(gè)響應(yīng)包含一個(gè)反映trace請(qǐng)求中發(fā)送的所有頭域的信息。
??????當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你需要重載這個(gè)方法。
??????8、getLastModified
??????protected?long?getLastModified(HttpServletRequest?request);
??????返回這個(gè)請(qǐng)求實(shí)體的最后修改時(shí)間。為了支持GET操作,你必須重載這一方法,以精確地反映最后修改的時(shí)間。這將有助于瀏覽器和代理服務(wù)器減少裝載服務(wù)器和網(wǎng)絡(luò)資源,從而更加有效地工作。返回的數(shù)值是自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
默認(rèn)的執(zhí)行結(jié)果是返回一個(gè)負(fù)數(shù),這標(biāo)志著最后修改時(shí)間未知,它也不能被一個(gè)有條件的GET操作使用。
??????9、service
??????protected?void?service(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????public?void?service(ServletRequest?request,?ServletResponse?response)
????????????throws?ServletException,?IOException;
??????這是一個(gè)Servlet的HTTP-specific方案,它分配請(qǐng)求到這個(gè)類的支持這個(gè)請(qǐng)求的其他方法。
??????當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你不必重載這個(gè)方法。
??????八、HttpSessionBindingEvent類\
??????定義\
??????public?class?HttpSessionBindingEvent?extends?EventObject
??????這個(gè)事件是在監(jiān)聽到HttpSession發(fā)生綁定和取消綁定的情況時(shí)連通HttpSessionBindingListener的。這可能是一個(gè)session被終止或被認(rèn)定無(wú)效的結(jié)果。
??????事件源是HttpSession.putValue或HttpSession.removeValue。
??????構(gòu)造函數(shù)
??????public?HttpSessionBindingEvent(HttpSession?session,?String?name);
??????通過(guò)引起這個(gè)事件的Session和發(fā)生綁定或取消綁定的對(duì)象名構(gòu)造一個(gè)新的HttpSessionBindingEvent。
??????方法
??????1、getName
??????public?String?getName();
??????返回發(fā)生綁定和取消綁定的對(duì)象的名字。
??????2、getSession
??????public?HttpSession?getSession();
??????返回發(fā)生綁定和取消綁定的session的名字。
?????????九、HttpUtils類\
??????定義\
??????public?class?HttpUtils
??????收集HTTP?Servlet使用的靜態(tài)的有效的方法。
??????方法
??????1、getRequestURL
??????public?static?StringBuffer?getRequestURL(HttpServletRequest
????????????request);
??????在服務(wù)器上重建客戶端用來(lái)建立請(qǐng)求的URL。這個(gè)方法反映了不同的協(xié)議(例如http和https)和端口,但不包含查詢字符串。
??????這個(gè)方法返回一個(gè)StringBuffer而不是一個(gè)String,這樣URL可以被Servlet開發(fā)者有效地修改。
??????2、parsePostData
??????public?static?Hashtable?parsePostData(int?len,?
????????????ServletInputstream?in);
?????? 解析一個(gè)包含MIME類型application/x-www-form-urlencoded的數(shù)據(jù)的流,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的 hash?table。這里的關(guān)鍵值是字符串,數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以在POST的數(shù)據(jù)中出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash?table中的字符串所對(duì)應(yīng)的值的列表中。
??????從POST數(shù)據(jù)讀出的數(shù)據(jù)將經(jīng)過(guò)URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
??????當(dāng)POST數(shù)據(jù)無(wú)效時(shí),該方法拋出一個(gè)IllegalArgumentException。
??????3、parseQueryString
??????public?static?Hashtable?parseQueryString(String?s);
??????解析一個(gè)查詢字符串,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的hash?table。這里的數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash?table中的字符串所對(duì)應(yīng)的值的列表中。
??????從查詢字符串讀出的數(shù)據(jù)將經(jīng)過(guò)URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
??????當(dāng)查詢字符串無(wú)效時(shí),該方法拋出一個(gè)IllegalArgumentException。
??????所包含的接口:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingListener;HttpSessionContext。
??????所包含的類:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。
??????一、HttpServletRequest接口
??????定義\
??????public?interface?HttpServletRequest?extends?ServletRequest;
??????用來(lái)處理一個(gè)對(duì)Servlet的HTTP格式的請(qǐng)求信息。
??????方法
??????1、getAuthType
??????public?String?getAuthType();
??????返回這個(gè)請(qǐng)求的身份驗(yàn)證模式。
??????2、getCookies
??????public?Cookie[]?getCookies();
??????返回一個(gè)數(shù)組,該數(shù)組包含這個(gè)請(qǐng)求中當(dāng)前的所有cookie。如果這個(gè)請(qǐng)求中沒(méi)有cookie,返回一個(gè)空數(shù)組。
??????3、getDateHeader
??????public?long?getDateHeader(String?name);
??????返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)反映自1970-1-1日(GMT)以來(lái)的精確到毫秒的長(zhǎng)整數(shù)。
??????如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????4、getHeader
??????public?String?getHeader(String?name);
??????返回一個(gè)請(qǐng)求頭域的值。(譯者注:與上一個(gè)方法不同的是,該方法返回一個(gè)字符串)
??????如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????5、getHeaderNames
??????public?Enumeration?getHeaderNames();
??????該方法返回一個(gè)String對(duì)象的列表,該列表反映請(qǐng)求的所有頭域名。
??????有的引擎可能不允許通過(guò)這種方法訪問(wèn)頭域,在這種情況下,這個(gè)方法返回一個(gè)空的列表。
??????6、getIntHeader
??????public?int?getIntHeader(String?name);
??????返回指定的請(qǐng)求頭域的值,這個(gè)值被轉(zhuǎn)換成一個(gè)整數(shù)。
??????如果頭域不能轉(zhuǎn)換,拋出一個(gè)IllegalArgumentException。如果這個(gè)請(qǐng)求頭域不存在,這個(gè)方法返回-1。
??????7、getMethod
??????public?String?getMethod();
??????返回這個(gè)請(qǐng)求使用的HTTP方法(例如:GET、POST、PUT)
??????8、getPathInfo
??????public?String?getPathInfo();
?????? 這個(gè)方法返回在這個(gè)請(qǐng)求的URL的Servlet路徑之后的請(qǐng)求URL的額外的路徑信息。如果這個(gè)請(qǐng)求URL包括一個(gè)查詢字符串,在返回值內(nèi)將不包括這個(gè)查詢字符串。這個(gè)路徑在返回之前必須經(jīng)過(guò)URL解碼。如果在這個(gè)請(qǐng)求的URL的Servlet路徑之后沒(méi)有路徑信息。這個(gè)方法返回空值。
??????9、getPathTranslated
??????public?String?getPathTranslated();
??????這個(gè)方法獲得這個(gè)請(qǐng)求的URL的Servlet路徑之后的額外的路徑信息,并將它轉(zhuǎn)換成一個(gè)真實(shí)的路徑。在進(jìn)行轉(zhuǎn)換前,這個(gè)請(qǐng)求的URL必須經(jīng)過(guò)URL解碼。如果在這個(gè)URL的Servlet路徑之后沒(méi)有附加路徑信息。這個(gè)方法返回空值。
??????10、getQueryString
??????public?String?getQueryString();
??????返回這個(gè)請(qǐng)求URL所包含的查詢字符串。一個(gè)查詢字串符在一個(gè)URL中由一個(gè)“?”引出。如果沒(méi)有查詢字符串,這個(gè)方法返回空值。
??????11、getRemoteUser
??????public?String?getRemoteUser
??????返回作了請(qǐng)求的用戶名,這個(gè)信息用來(lái)作HTTP用戶論證。
??????如果在請(qǐng)求中沒(méi)有用戶名信息,這個(gè)方法返回空值。
??????12、getRequestedSessionId
??????public?String?getRequestedSessionId();
??????返回這個(gè)請(qǐng)求相應(yīng)的session?id。如果由于某種原因客戶端提供的session?id是無(wú)效的,這個(gè)session?id將與在當(dāng)前session中的session?id不同,與此同時(shí),將建立一個(gè)新的session。
??????如果這個(gè)請(qǐng)求沒(méi)與一個(gè)session關(guān)聯(lián),這個(gè)方法返回空值。
??????13、getRequestURI
??????public?String?getRequestURI();
?????? 從HTTP請(qǐng)求的第一行返回請(qǐng)求的URL中定義被請(qǐng)求的資源的部分。如果有一個(gè)查詢字符串存在,這個(gè)查詢字符串將不包括在返回值當(dāng)中。例如,一個(gè)請(qǐng)求通過(guò) /catalog/books?id=1這樣的URL路徑訪問(wèn),這個(gè)方法將返回/catalog/books。這個(gè)方法的返回值包括了Servlet路徑和路徑信息。
??????如果這個(gè)URL路徑中的的一部分經(jīng)過(guò)了URL編碼,這個(gè)方法的返回值在返回之前必須經(jīng)過(guò)解碼。
??????14、getServletPath
??????public?String?getServletPath();
?????? 這個(gè)方法返回請(qǐng)求URL反映調(diào)用Servlet的部分。例如,一個(gè)Servlet被映射到/catalog/summer這個(gè)URL路徑,而一個(gè)請(qǐng)求使用了/catalog/summer/casual這樣的路徑。所謂的反映調(diào)用Servlet的部分就是指/catalog/summer。
??????如果這個(gè)Servlet不是通過(guò)路徑匹配來(lái)調(diào)用。這個(gè)方法將返回一個(gè)空值。
??????15、getSession
??????public?HttpSession?getSession();
??????public?HttpSession?getSession(boolean?create);
??????返回與這個(gè)請(qǐng)求關(guān)聯(lián)的當(dāng)前的有效的session。如果調(diào)用這個(gè)方法時(shí)沒(méi)帶參數(shù),那么在沒(méi)有session與這個(gè)請(qǐng)求關(guān)聯(lián)的情況下,將會(huì)新建一個(gè)session。如果調(diào)用這個(gè)方法時(shí)帶入了一個(gè)布爾型的參數(shù),只有當(dāng)這個(gè)參數(shù)為真時(shí),session才會(huì)被建立。
??????為了確保session能夠被完全維持。Servlet開發(fā)者必須在響應(yīng)被提交之前調(diào)用該方法。
??????如果帶入的參數(shù)為假,而且沒(méi)有session與這個(gè)請(qǐng)求關(guān)聯(lián)。這個(gè)方法會(huì)返回空值。
??????16、isRequestedSessionIdValid
??????public?boolean?isRequestedSessionIdValid();
??????這個(gè)方法檢查與此請(qǐng)求關(guān)聯(lián)的session當(dāng)前是不是有效。如果當(dāng)前請(qǐng)求中使用的session無(wú)效,它將不能通過(guò)getSession方法返回。
??????17、isRequestedSessionIdFromCookie
??????public?boolean?isRequestedSessionIdFromCookie();
??????如果這個(gè)請(qǐng)求的session?id是通過(guò)客戶端的一個(gè)cookie提供的,該方法返回真,否則返回假。
??????18、isRequestedSessionIdFromURL
??????public?boolean?isRequestedSessionIdFromURL();
??????如果這個(gè)請(qǐng)求的session?id是通過(guò)客戶端的URL的一部分提供的,該方法返回真,否則返回假。請(qǐng)注意此方法與isRequestedSessionIdFromUrl在URL的拼寫上不同。
??????以下方法將被取消\\r
??????19、isRequestedSessionIdFromUrl
??????public?boolean?isRequestedSessionIdFromUrl();
??????該方法被isRequestedSessionIdFromURL代替。
??????二、HttpServletResponse接口
??????定義\\r
??????public?interface?HttpServletResponse?extends?ServletResponse
??????描述一個(gè)返回到客戶端的HTTP回應(yīng)。這個(gè)接口允許Servlet程序員利用HTTP協(xié)議規(guī)定的頭信息。
??????成員變量
??????public?static?final?int?SC_CONTINUE?=?100;
??????public?static?final?int?SC_SWITCHING_PROTOCOLS?=?101;
??????public?static?final?int?SC_OK?=?200;
??????public?static?final?int?SC_CREATED?=?201;
??????public?static?final?int?SC_ACCEPTED?=?202;
??????public?static?final?int?SC_NON_AUTHORITATIVE_INFORMATION?=?203;
??????public?static?final?int?SC_NO_CONTENT?=?204;
??????public?static?final?int?SC_RESET_CONTENT?=?205;
??????public?static?final?int?SC_PARTIAL_CONTENT?=?206;
??????public?static?final?int?SC_MULTIPLE_CHOICES?=?300;
??????public?static?final?int?SC_MOVED_PERMANENTLY?=?301;
??????public?static?final?int?SC_MOVED_TEMPORARILY?=?302;
??????public?static?final?int?SC_SEE_OTHER?=?303;
??????public?static?final?int?SC_NOT_MODIFIED?=?304;
??????public?static?final?int?SC_USE_PROXY?=?305;
??????public?static?final?int?SC_BAD_REQUEST?=?400;
??????public?static?final?int?SC_UNAUTHORIZED?=?401;
??????public?static?final?int?SC_PAYMENT_REQUIRED?=?402;
??????public?static?final?int?SC_FORBIDDEN?=?403;
??????public?static?final?int?SC_NOT_FOUND?=?404;
??????public?static?final?int?SC_METHOD_NOT_ALLOWED?=?405;
??????public?static?final?int?SC_NOT_ACCEPTABLE?=?406;
??????public?static?final?int?SC_PROXY_AUTHENTICATION_REQUIRED?=?407;
??????public?static?final?int?SC_REQUEST_TIMEOUT?=?408;
??????public?static?final?int?SC_CONFLICT?=?409;
??????public?static?final?int?SC_GONE?=?410;
??????public?static?final?int?SC_LENGTH_REQUIRED?=?411;
??????public?static?final?int?SC_PRECONDITION_FAILED?=?412;
??????public?static?final?int?SC_REQUEST_ENTITY_TOO_LARGE?=?413;
??????public?static?final?int?SC_REQUEST_URI_TOO_LONG?=?414;
??????public?static?final?int?SC_UNSUPPORTED_MEDIA_TYPE?=?415;
??????public?static?final?int?SC_INTERNAL_SERVER_ERROR?=?500;
??????public?static?final?int?SC_NOT_IMPLEMENTED?=?501;
??????public?static?final?int?SC_BAD_GATEWAY?=?502;
??????public?static?final?int?SC_SERVICE_UNAVAILABLE?=?503;
??????public?static?final?int?SC_GATEWAY_TIMEOUT?=?504;
??????public?static?final?int?SC_HTTP_VERSION_NOT_SUPPORTED?=?505;
??????以上HTTP產(chǎn)狀態(tài)碼是由HTTP/1.1定義的。
??????方法
??????1、addCookie
??????public?void?addCookie(Cookie?cookie);
??????在響應(yīng)中增加一個(gè)指定的cookie。可多次調(diào)用該方法以定義多個(gè)cookie。為了設(shè)置適當(dāng)?shù)念^域,該方法應(yīng)該在響應(yīng)被提交之前調(diào)用。
??????2、containsHeader
??????public?boolean?containsHeader(String?name);
??????檢查是否設(shè)置了指定的響應(yīng)頭。
??????3、encodeRedirectURL
??????public?String?encodeRedirectURL(String?url);
??????對(duì)sendRedirect方法使用的指定URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。之所以提供這個(gè)附加的編碼方法,是因?yàn)樵趓edirect的情況下,決定是否對(duì)URL進(jìn)行編碼的規(guī)則和一般情況有所不同。所給的URL必須是一個(gè)絕對(duì)URL。相對(duì)URL不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
??????所有提供給sendRedirect方法的URL都應(yīng)通過(guò)這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
??????4、encodeURL
??????public?String?encodeURL(String?url);
?????? 對(duì)包含session?ID的URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè)URL。Servlet引擎必須提供URL編碼方法,因?yàn)樵谟行┣闆r下,我們將不得不重寫URL,例如,在響應(yīng)對(duì)應(yīng)的請(qǐng)求中包含一個(gè)有效的session,但是這個(gè)session不能被非URL的(例如cookie)的手段來(lái)維持。
??????所有提供給Servlet的URL都應(yīng)通過(guò)這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有瀏覽器中正常運(yùn)行。
??????5、sendError
??????public?void?sendError(int?statusCode)?throws?IOException;
??????public?void?sendError(int?statusCode,?String?message)?throws
?????????IOException;
??????用給定的狀態(tài)碼發(fā)給客戶端一個(gè)錯(cuò)誤響應(yīng)。如果提供了一個(gè)message參數(shù),這將作為響應(yīng)體的一部分被發(fā)出,否則,服務(wù)器會(huì)返回錯(cuò)誤代碼所對(duì)應(yīng)的標(biāo)準(zhǔn)信息。
??????調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
??????6、sendRedirect
??????public?void?sendRedirect(String?location)?throws?IOException;
??????使用給定的路徑,給客戶端發(fā)出一個(gè)臨時(shí)轉(zhuǎn)向的響應(yīng)(SC_MOVED_TEMPORARILY)。給定的路徑必須是絕對(duì)URL。相對(duì)URL將不能被接收,會(huì)拋出一個(gè)IllegalArgumentException。
??????這個(gè)方法必須在響應(yīng)被提交之前調(diào)用。調(diào)用這個(gè)方法后,響應(yīng)立即被提交。在調(diào)用這個(gè)方法后,Servlet不會(huì)再有更多的輸出。
??????7、setDateHeader
??????public?void?setDateHeader(String?name,?long?date);
??????用一個(gè)給定的名稱和日期值設(shè)置響應(yīng)頭,這里的日期值應(yīng)該是反映自1970-1-1日(GMT)以來(lái)的精確到毫秒的長(zhǎng)整數(shù)。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????8、setHeader
??????public?void?setHeader(String?name,?String?value);
??????用一個(gè)給定的名稱和域設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????9、setIntHeader
??????public?void?setIntHeader(String?name,?int?value);
??????用一個(gè)給定的名稱和整形值設(shè)置響應(yīng)頭。如果響應(yīng)頭已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????10、setStatus
??????public?void?setStatus(int?statusCode);
??????這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。
??????以下的幾個(gè)方法將被取消\
??????11、encodeRedirectUrl
??????public?String?encodeRedirectUrl(String?url);
??????該方法被encodeRedirectURL取代。?
??????12、encodeUrl
??????public?String?encodeUrl(String?url);
??????該方法被encodeURL取代。?
??????13、setStatus
??????public?void?setStatus(int?statusCode,?String?message);
??????這個(gè)方法設(shè)置了響應(yīng)的狀態(tài)碼,如果狀態(tài)碼已經(jīng)被設(shè)置,新的值將覆蓋當(dāng)前的值。如果提供了一個(gè)message,它也將會(huì)被作為響應(yīng)體的一部分被發(fā)送。
??????三、HttpSession接口
??????定義\
??????public?interface?HttpSession
??????這個(gè)接口被Servlet引擎用來(lái)實(shí)現(xiàn)在HTTP客戶端和HTTP會(huì)話兩者的關(guān)聯(lián)。這種關(guān)聯(lián)可能在多外連接和請(qǐng)求中持續(xù)一段給定的時(shí)間。session用來(lái)在無(wú)狀態(tài)的HTTP協(xié)議下越過(guò)多個(gè)請(qǐng)求頁(yè)面來(lái)維持狀態(tài)和識(shí)別用戶。
??????一個(gè)session可以通過(guò)cookie或重寫URL來(lái)維持。
??????方法
??????1、getCreationTime
??????public?long?getCreationTime();
??????返回建立session的時(shí)間,這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
??????2、getId
??????public?String?getId();
??????返回分配給這個(gè)session的標(biāo)識(shí)符。一個(gè)HTTP?session的標(biāo)識(shí)符是一個(gè)由服務(wù)器來(lái)建立和維持的唯一的字符串。
??????3、getLastAccessedTime
??????public?long?getLastAccessedTime();
??????返回客戶端最后一次發(fā)出與這個(gè)session有關(guān)的請(qǐng)求的時(shí)間,如果這個(gè)session是新建立的,返回-1。這個(gè)時(shí)間表示為自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
??????4、getMaxInactiveInterval
??????public?int?getMaxInactiveInterval();
??????返加一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長(zhǎng)時(shí)間。在這個(gè)時(shí)間之后,Servlet引擎可能被Servlet引擎終止。如果這個(gè)session不會(huì)被終止,這個(gè)方法返回-1。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????5、getValue
??????public?Object?getValue(String?name);
??????返回一個(gè)以給定的名字綁定到session上的對(duì)象。如果不存在這樣的綁定,返回空值。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????6、getValueNames
??????public?String[]?getValueNames();
??????以一個(gè)數(shù)組返回綁定到session上的所有數(shù)據(jù)的名稱。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????7、invalidate
??????public?void?invalidate();
??????這個(gè)方法會(huì)終止這個(gè)session。所有綁定在這個(gè)session上的數(shù)據(jù)都會(huì)被清除。并通過(guò)HttpSessionBindingListener接口的valueUnbound方法發(fā)出通告。
??????8、isNew
??????public?boolean?isNew();
?????? 返回一個(gè)布爾值以判斷這個(gè)session是不是新的。如果一個(gè)session已經(jīng)被服務(wù)器建立但是還沒(méi)有收到相應(yīng)的客戶端的請(qǐng)求,這個(gè)session將被認(rèn)為是新的。這意味著,這個(gè)客戶端還沒(méi)有加入會(huì)話或沒(méi)有被會(huì)話公認(rèn)。在他發(fā)出下一個(gè)請(qǐng)求時(shí)還不能返回適當(dāng)?shù)膕ession認(rèn)證信息。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????9、putValue
??????public?void?putValue(String?name,?Object?value);
??????以給定的名字,綁定給定的對(duì)象到session中。已存在的同名的綁定會(huì)被重置。這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueBound方法。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????10、removeValue
??????public?void?removeValue(String?name);
??????取消給定名字的對(duì)象在session上的綁定。如果未找到給定名字的綁定的對(duì)象,這個(gè)方法什么出不做。?這時(shí)會(huì)調(diào)用HttpSessionBindingListener接口的valueUnbound方法。
??????當(dāng)session無(wú)效后再調(diào)用這個(gè)方法會(huì)拋出一個(gè)IllegalStateException。
??????11、setMaxInactiveInterval
??????public?int?setMaxInactiveInterval(int?interval);
??????設(shè)置一個(gè)秒數(shù),這個(gè)秒數(shù)表示客戶端在不發(fā)出請(qǐng)求時(shí),session被Servlet引擎維持的最長(zhǎng)時(shí)間。
??????以下這個(gè)方法將被取消\
??????12、getSessionContext
??????public?HttpSessionContext?getSessionContext();
??????返回session在其中得以保持的環(huán)境變量。這個(gè)方法和其他所有HttpSessionContext的方法一樣被取消了。
??????四、HttpSessionBindingListener接口
??????定義\
??????public?interface?HttpSessionBindingListener
??????這個(gè)對(duì)象被加入到HTTP的session中,執(zhí)行這個(gè)接口會(huì)通告有沒(méi)有什么對(duì)象被綁定到這個(gè)HTTP?session中或被從這個(gè)HTTP?session中取消綁定。
??????方法
??????1、valueBound
??????public?void?valueBound(HttpSessionBindingEvent?event);
??????當(dāng)一個(gè)對(duì)象被綁定到session中,調(diào)用此方法。HttpSession.putValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。
??????2、valueUnbound
??????public?void?valueUnbound(HttpSessionBindingEvent?event);
??????當(dāng)一個(gè)對(duì)象被從session中取消綁定,調(diào)用此方法。HttpSession.removeValue方法被調(diào)用時(shí),Servlet引擎應(yīng)該調(diào)用此方法。
??????五、HttpSessionContext接口
??????定義\
??????此接口將被取消\
??????public?interface?HttpSessionContext
??????這個(gè)對(duì)象是與一組HTTP?session關(guān)聯(lián)的單一的實(shí)體。
??????這個(gè)接口由于安全的原因被取消,它出現(xiàn)在目前的版本中僅僅是為了兼容性的原因。這個(gè)接口的方法將模擬以前的版本的定義返回相應(yīng)的值。
??????方法
??????1、getSession
??????public?HttpSession?getSession(String?sessionId);
??????當(dāng)初用來(lái)返回與這個(gè)session?id相關(guān)的session。現(xiàn)在返回空值。
??????2、getIds
??????public?Enumeration?getIds();
??????當(dāng)初用來(lái)返回這個(gè)環(huán)境下所有session?id的列表。現(xiàn)在返回空的列表。
??????六、Cookie類\
??????定義\
??????public?class?Cookie?implements?Cloneable
??????這個(gè)類描述了一個(gè)cookie,有關(guān)cookie的定義你可以參照Netscape?Communications?Corporation的說(shuō)明,也可以參照RFC?2109。
??????構(gòu)造函數(shù)
??????public?Cookie(String?name,?String?value);
??????用一個(gè)name-value對(duì)定義一個(gè)cookie。這個(gè)name必須能被HTTP/1.1所接受。
??????以字符$開頭的name被RFC?2109保留。
??????給定的name如果不能被HTTP/1.1所接受,該方法拋出一個(gè)IllegalArgumentException。
??????方法
??????1、getComment
??????public?String?getComment();
??????返回描述這個(gè)cookie目的的說(shuō)明,如果未定義這個(gè)說(shuō)明,返回空值。
??????2、getDomain
??????public?String?getDomain();
??????返回這個(gè)cookie可以出現(xiàn)的區(qū)域,如果未定義區(qū)域,返回空值。
??????3、getMaxAge
??????public?int?getMaxAge();
??????這個(gè)方法返回這個(gè)cookie指定的最長(zhǎng)存活時(shí)期。如果未定義這個(gè)最長(zhǎng)存活時(shí)期,該方法返回-1。
??????4、getName
??????public?String?getName();
??????該方法返回cookie名。
??????5、getPath
??????public?String?getPath();
??????返回這個(gè)cookie有效的所有URL路徑的前綴,如果未定義,返回空值。
??????6、getSecure
??????public?boolean?getSecure();
??????如果這個(gè)cookie只通過(guò)安全通道傳輸返回真,否則返回假。
??????7、getValue
??????public?String?getValue();
??????該方法返回cookie的值。
??????8、getVersion
??????public?int?getVersion();
??????返回cookie的版本。版本1由RFC?2109解釋。版本0由Netscape?Communications?Corporation的說(shuō)明解釋。新構(gòu)造的cookie默認(rèn)使用版本0。
??????9、setComment
??????public?void?setComment(String?purpose);
??????如果一個(gè)用戶將這個(gè)cookie提交給另一個(gè)用戶,必須通過(guò)這個(gè)說(shuō)明描述這個(gè)cookie的目的。版本0不支持這個(gè)屬性。
??????10、setDomain
??????public?void?setDomain(String?pattern);
??????這個(gè)方法設(shè)置cookie的有效域的屬性。這個(gè)屬性指定了cookie可以出現(xiàn)的區(qū)域。一個(gè)有效域以一個(gè)點(diǎn)開頭(.foo.com),這意味著在指定的域名解析系統(tǒng)的區(qū)域中(可能是 www.foo.com但不是a.b.foo.com)的主機(jī)可以看到這個(gè)cookie。默認(rèn)情況是,cookie只能返回保存它的主機(jī)。
??????11、setMaxAge
??????public?void?setMaxAge(int?expiry);
??????這個(gè)方法設(shè)定這個(gè)cookie的最長(zhǎng)存活時(shí)期。在該存活時(shí)期之后,cookie會(huì)被終目。負(fù)數(shù)表示這個(gè)cookie不會(huì)生效,0將從客戶端刪除這個(gè)cookie。
?????????12、setPath
??????public?void?setPath(String?uri);
??????這個(gè)方法設(shè)置cookie的路徑屬性。客戶端只能向以這個(gè)給定的路徑String開頭的路徑返回cookie。
??????13、setSecure
??????public?void?setSecure(boolean?flag);
??????指出這個(gè)cookie只能通過(guò)安全通道(例如HTTPS)發(fā)送。只有當(dāng)產(chǎn)生這個(gè)cookie的服務(wù)器使用安全協(xié)議發(fā)送這個(gè)cookie值時(shí)才能這樣設(shè)置。
??????14、setValue
??????public?void?setValue(String?newValue);
??????設(shè)置這個(gè)cookie的值,對(duì)于二進(jìn)制數(shù)據(jù)采用BASE64編碼。
??????版本0不能使用空格、{}、()、=、,、“”、/、?、@、:以及;。
??????15、setVersion
??????public?void?setVersion(int?v);
??????設(shè)置cookie的版本號(hào)
??????七、HttpServlet類\
??????定義\
??????public?class?HttpServlet?extends?GenericServlet?implements?
?????????Serializable
??????這是一個(gè)抽象類,用來(lái)簡(jiǎn)化HTTP?Servlet寫作的過(guò)程。它是GenericServlet類的擴(kuò)充,提供了一個(gè)處理HTTP協(xié)議的框架。
??????在這個(gè)類中的service方法支持例如GET、POST這樣的標(biāo)準(zhǔn)的HTTP方法。這一支持過(guò)程是通過(guò)分配他們到適當(dāng)?shù)姆椒ǎɡ鏳oGet、doPost)來(lái)實(shí)現(xiàn)的。
??????方法
??????1、doDelete
??????protected?void?doDelete(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?DELETE操作。這個(gè)操作允許客戶端請(qǐng)求從服務(wù)器上刪除URL。這一操作可能有負(fù)面影響,對(duì)此用戶就負(fù)起責(zé)任。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理DELETE請(qǐng)求時(shí),你必須重載這一方法。
??????2、doGet
??????protected?void?doGet(HttpServletRequest?request,?
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?GET操作。這個(gè)操作允許客戶端簡(jiǎn)單地從一個(gè)HTTP服務(wù)器“獲得”資源。對(duì)這個(gè)方法的重載將自動(dòng)地支持HEAD方法。
??????GET操作應(yīng)該是安全而且沒(méi)有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。
??????3、doHead
??????protected?void?doHead(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?HEAD操作。默認(rèn)的情況是,這個(gè)操作會(huì)按照一個(gè)無(wú)條件的GET方法來(lái)執(zhí)行,該操作不向客戶端返回任何數(shù)據(jù),而僅僅是返回包含內(nèi)容長(zhǎng)度的頭信息。
??????與GET操作一樣,這個(gè)操作應(yīng)該是安全而且沒(méi)有負(fù)面影響的。這個(gè)操作也應(yīng)該可以安全地重復(fù)。
??????這個(gè)方法的默認(rèn)執(zhí)行結(jié)果是自動(dòng)處理HTTP?HEAD操作,這個(gè)方法不需要被一個(gè)子類執(zhí)行。?
??????4、doOptions
??????protected?void?doOptions(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?OPTION操作。這個(gè)操作自動(dòng)地決定支持哪一種HTTP方法。例如,一個(gè)Servlet寫了一個(gè)HttpServlet的子類并重載了doGet方法,doOption會(huì)返回下面的頭:
??????Allow:?GET,HEAD,TRACE,OPTIONS
??????你一般不需要重載這個(gè)方法。
??????5、doPost
??????protected?void?doPost(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?POST操作。這個(gè)操作包含請(qǐng)求體的數(shù)據(jù),Servlet應(yīng)該按照他行事。
??????這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購(gòu)物。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理POST操作時(shí),你必須在HttpServlet的子類中重載這一方法。
??????6、doPut
??????protected?void?doPut(HttpServletRequest?request,?
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?PUT操作。這個(gè)操作類似于通過(guò)FTP發(fā)送文件。
??????這個(gè)操作可能有負(fù)面影響。例如更新存儲(chǔ)的數(shù)據(jù)或在線購(gòu)物。
??????這一方法的默認(rèn)執(zhí)行結(jié)果是返回一個(gè)HTTP?BAD_REQUEST錯(cuò)誤。當(dāng)你要處理PUT操作時(shí),你必須在HttpServlet的子類中重載這一方法。
??????7、doTrace
??????protected?void?doTrace(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????被這個(gè)類的service方法調(diào)用,用來(lái)處理一個(gè)HTTP?TRACE操作。這個(gè)操作的默認(rèn)執(zhí)行結(jié)果是產(chǎn)生一個(gè)響應(yīng),這個(gè)響應(yīng)包含一個(gè)反映trace請(qǐng)求中發(fā)送的所有頭域的信息。
??????當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你需要重載這個(gè)方法。
??????8、getLastModified
??????protected?long?getLastModified(HttpServletRequest?request);
??????返回這個(gè)請(qǐng)求實(shí)體的最后修改時(shí)間。為了支持GET操作,你必須重載這一方法,以精確地反映最后修改的時(shí)間。這將有助于瀏覽器和代理服務(wù)器減少裝載服務(wù)器和網(wǎng)絡(luò)資源,從而更加有效地工作。返回的數(shù)值是自1970-1-1日(GMT)以來(lái)的毫秒數(shù)。?
默認(rèn)的執(zhí)行結(jié)果是返回一個(gè)負(fù)數(shù),這標(biāo)志著最后修改時(shí)間未知,它也不能被一個(gè)有條件的GET操作使用。
??????9、service
??????protected?void?service(HttpServletRequest?request,
????????????HttpServletResponse?response)?throws?ServletException,
????????????IOException;
??????public?void?service(ServletRequest?request,?ServletResponse?response)
????????????throws?ServletException,?IOException;
??????這是一個(gè)Servlet的HTTP-specific方案,它分配請(qǐng)求到這個(gè)類的支持這個(gè)請(qǐng)求的其他方法。
??????當(dāng)你開發(fā)Servlet時(shí),在多數(shù)情況下你不必重載這個(gè)方法。
??????八、HttpSessionBindingEvent類\
??????定義\
??????public?class?HttpSessionBindingEvent?extends?EventObject
??????這個(gè)事件是在監(jiān)聽到HttpSession發(fā)生綁定和取消綁定的情況時(shí)連通HttpSessionBindingListener的。這可能是一個(gè)session被終止或被認(rèn)定無(wú)效的結(jié)果。
??????事件源是HttpSession.putValue或HttpSession.removeValue。
??????構(gòu)造函數(shù)
??????public?HttpSessionBindingEvent(HttpSession?session,?String?name);
??????通過(guò)引起這個(gè)事件的Session和發(fā)生綁定或取消綁定的對(duì)象名構(gòu)造一個(gè)新的HttpSessionBindingEvent。
??????方法
??????1、getName
??????public?String?getName();
??????返回發(fā)生綁定和取消綁定的對(duì)象的名字。
??????2、getSession
??????public?HttpSession?getSession();
??????返回發(fā)生綁定和取消綁定的session的名字。
?????????九、HttpUtils類\
??????定義\
??????public?class?HttpUtils
??????收集HTTP?Servlet使用的靜態(tài)的有效的方法。
??????方法
??????1、getRequestURL
??????public?static?StringBuffer?getRequestURL(HttpServletRequest
????????????request);
??????在服務(wù)器上重建客戶端用來(lái)建立請(qǐng)求的URL。這個(gè)方法反映了不同的協(xié)議(例如http和https)和端口,但不包含查詢字符串。
??????這個(gè)方法返回一個(gè)StringBuffer而不是一個(gè)String,這樣URL可以被Servlet開發(fā)者有效地修改。
??????2、parsePostData
??????public?static?Hashtable?parsePostData(int?len,?
????????????ServletInputstream?in);
?????? 解析一個(gè)包含MIME類型application/x-www-form-urlencoded的數(shù)據(jù)的流,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的 hash?table。這里的關(guān)鍵值是字符串,數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以在POST的數(shù)據(jù)中出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash?table中的字符串所對(duì)應(yīng)的值的列表中。
??????從POST數(shù)據(jù)讀出的數(shù)據(jù)將經(jīng)過(guò)URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
??????當(dāng)POST數(shù)據(jù)無(wú)效時(shí),該方法拋出一個(gè)IllegalArgumentException。
??????3、parseQueryString
??????public?static?Hashtable?parseQueryString(String?s);
??????解析一個(gè)查詢字符串,并創(chuàng)建一個(gè)具有關(guān)鍵值-數(shù)據(jù)對(duì)的hash?table。這里的數(shù)據(jù)是該字符串所對(duì)應(yīng)的值的列表。一個(gè)關(guān)鍵值可以出現(xiàn)一次或多次。這個(gè)關(guān)鍵值每出現(xiàn)一次,它的相應(yīng)的值就被加入到hash?table中的字符串所對(duì)應(yīng)的值的列表中。
??????從查詢字符串讀出的數(shù)據(jù)將經(jīng)過(guò)URL解碼,+將被轉(zhuǎn)換為空格以十六進(jìn)制傳送的數(shù)據(jù)(例如%xx)將被轉(zhuǎn)換成字符。
??????當(dāng)查詢字符串無(wú)效時(shí),該方法拋出一個(gè)IllegalArgumentException。