簡述:
在Servlet接口中的service(ServletRequest request , ServletResponse response)方法中有一個ServletRequest類型的參數。ServletRequest類表示來自客戶端的請求。當Servlet容器接收到客戶端要求訪問特定Servlet的請求時,容器先解析客戶端的原始請求數據,把它包裝成一個ServletRequest對象。當容器調用Servlet對象的service()方法時,就能夠把ServletRequest對象做爲參數傳給service()方法。java
ServletRequest接口提供了一系列用於讀取客戶端請求數據的方法,以下:
1)getContentLength():返回請求正文的長度。若是請求正文的長度位置,則返回-1.
2)getContentType():得到請求正文的MIME類型。若是請求正文的類型未知,則返回null。
3)getInputStram():返回用於讀取請求正文的輸入流。
4)getLocalAddr():返回服務器短短的IP地址。
5)getLocalName():返回服務器端的主機名。
6)getLocalPort():返回服務器端的FTP端口號。
7)getParameter(String name):根據給定的請求參數名,返回來自客戶請求中的匹配的請求參數值。
8) getProtocal():返回客戶端和服務器端通訊所用的協議的名稱及版本號。
9)getReader():返回用戶讀取字符串形式的請求正文的BufferedReader對象。
10)getRemoteAddr():返回客戶端的IP地址。
11)getRemoteHost():返回客戶端的主機名。
12)getRemotePort():返回客戶端的FTP端口號。
下面三個方法用戶在請求範圍內存取共享數據的方法:
1)setAttribute(String name , java.lang.Object object):在請求範圍內保存一個屬性,參數name標識屬性名,參數object標識屬性值。
2)getAttribute(String name):根據name參數給定的屬性名,返回請求範圍內的匹配的屬性值。
3)removeAttribute(String name):從請求範圍內刪除一個屬性。
HttpServletRequest接口
HttpServletRequest接口是ServletRequest接口的子接口。
HttpServlet類的重載service()方法及doGet()和doPost()等方法都有一個HttpServletRequest類型的參數,如:
-
protected void service(HttpServletRequest req, HttpServletResponse resp)
-
throws ServletException, IOException{........}
響應方法
HttpServletRequest接口提供了用於讀取HTTP請求中的相關信息的方法: 1)getContextPath():返回客戶端所請求訪問的web應用的URL入口。例如,若是客戶端訪問的URL爲http://localhost:8080/helloapp/info,那麼該發放返回「/helloapp」。 2)getCookies():返回HTTP請求中的全部的Cookie。 3)getHeader(String name):返回HTTP請求頭部的特定項。 4)getHeaderNames():返回一個Enumeration對象,它包含了HTTP請求頭部的全部項目名。 5)getMethod():返回HTTP請求方式,如post,或get。 6)getRequestURI():返回HTTP請求的頭部的第1行中的URI。 7)getQueryString():返回HTTP請求中的查詢字符串,即UTL中的「?」後面的內容。例如,若是客戶端訪問的URL爲 http://localhost:8080/htlloapp/info?username=tom ,那麼該方法返回「username=tome」。 根據SUN的Servlet API來建立的Servlet,無需費力的解析原始HTTP請求。解析原始HTTP請求的工做徹底由Servlet容器來代勞。Servlet容器把HTTP請求包裝成HttpServletRequest對象,Servlet只需調用該對象的getXXX()方法,節能輕輕鬆鬆地讀取到HTTP請求中的各類數據。