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