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