轉載自:https://blog.csdn.net/cold___play/article/details/100920952
****
HttpServletRequest 接口繼承自 ServletReauest 接口,功能比 ServletReauest 更強大。
HTTP 請求總共分為請求行、請求頭和請求體三部分,通過 HttpServletRequest 接口都可以獲取這些信息。

<br/>
**1. 獲取請求行信息**
包含請求方法、請求資源名、請求路徑等信息。
<table>
<thead>
<tr>
<th>方法聲明</th>
<th>功能描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>String <font face="微軟雅黑">getmethod()</font>
</td>
<td>該方法用于獲取HTTP請求消息中的請求方式(如GET、POST等)</td>
</tr>
<tr>
<td>String getReauestURI()</td>
<td>該方法用于獲取請求行中資源名稱部分,即位于URL的主機和端口之后、參數部分之前的部分</td>
</tr>
<tr>
<td>String getQueryString()</td>
<td>該方法用于獲取請求行中的參數部分,也就是資源路徑后面問號以后的所有內容</td>
</tr>
<tr>
<td>String getProtocol()</td>
<td>該方法用于獲取請求行中的協議名和版本,例如,HTTP/1.0 或 HTTP/1.1</td>
</tr>
<tr>
<td>String getContextPath( )</td>
<td>該方法用于獲取請求URL中屬于WEB應用程序的路徑,這個路徑以"/"開頭,表示相對于整個WEB站點的根目錄,路幾個結尾不含“/”。如果請求URL屬于web站點的根目錄,那么返回結果為空字符串“”</td>
</tr>
<tr>
<td>String getServletPath()</td>
<td>該方法用于獲取Servlet的名稱或Servlet所映射的路徑</td>
</tr>
<tr>
<td>String getRemoteAddr( )</td>
<td>該方法用于獲取請求客戶端的IP地址,其格式類似于"192.168.0.1"</td>
</tr>
<tr>
<td>String getRemoteHost()</td>
<td>該方法用于獲取請求客戶端的完整主機名,其格式類似于"pc1.xxxx.cn"。需要注意的是,如果無</td>
</tr>
<tr>
<td>int getRemotePort()</td>
<td>該方法用于獲取請求客戶端網絡連接的端口號</td>
</tr>
<tr>
<td>String getLocalAddr()</td>
<td>該方法用于獲取Web服務器上接收當前請求網絡連接的IP地址</td>
</tr>
<tr>
<td>String getLocalName()</td>
<td>該方法用于獲取Web服務器上接收當前網絡連接IP所對應的主機名</td>
</tr>
<tr>
<td>int getLocalPort()</td>
<td>該方法用于獲取Web服務器上接收當前網絡連接的端口號</td>
</tr>
<tr>
<td>String getServerName()</td>
<td>該方法用于獲取當前請求所指向的主機名,即HTTP請求消息中HOST頭字段所對應的主機名部分</td>
</tr>
<tr>
<td>int getServerPort()</td>
<td>該方法用于獲取當前請求所連接的服務器端口號,即如果HTTP請求消息中HOST頭字段所對應的端口號部分</td>
</tr>
<tr>
<td>String getScheme()</td>
<td>該方法用于獲取請求的協議名,例如http、https或ftp</td>
</tr>
<tr>
<td>StringBuffer getRequestURL()</td>
<td>該方法用于獲取客戶端發出請求時的完整URL,包括協議、服務器名、端口號、資源路徑等信息,但不包括后面的查詢參數部分。注意,getRequestRUL()方法返回的時StringBuffer類型,而不是String類型。</td>
</tr>
</tbody>
</table>
<br/>
**2. 獲取請求頭信息**
接收的數據類型,壓縮方式,語言等。
<table>
<thead>
<tr>
<th>方法聲明</th>
<th>功能描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>String getHeader(String name)</td>
<td>該方法用于獲取一個指定頭字段的值,如果請求消息中沒有包含指定的頭字段,getHeader()方法返回null;如果請求消息中包含有多個指定名稱的頭字段,getHeader()方法返回其中第一個頭字段的值</td>
</tr>
<tr>
<td>Enumeration getHeaders(String name)</td>
<td>該方法返回一個Enumeration集合對象,該集合對象由請求消息中出現的某個指定名稱的所有頭字段值組成。在多數情況下,一個頭字段名在請求消息中只出現一次,但有時候可能會出現多次</td>
</tr>
<tr>
<td>Enumeration getheaderNames()</td>
<td>該方法用于獲取一個包含所有請求頭字段的Enumeration對象</td>
</tr>
<tr>
<td>int getIntHeader(String name)</td>
<td>該方法用于獲取指定名稱的頭字段,并且將其值轉換為int類型。需要注意的是,如果指定名稱的頭字段不存在,返回值為-1;如果獲取到的頭字段的值不能轉為int類型,將發生NumberFormatException異常</td>
</tr>
<tr>
<td>Long getDateHeader(String name)</td>
<td>該方法用于獲取指定頭字段的值,并將其按GMT時間格式轉換成一個代表日期/時間的長整數,這個長整數是自1970年1月1日0點0分0秒算起的以毫秒為單位的時間值</td>
</tr>
<tr>
<td>String getContentType()</td>
<td>該方法用于獲取Content-Type頭字段的值,結果為String類型</td>
</tr>
<tr>
<td>int getContentLength()</td>
<td>該方法用于獲取Content-Length頭字段的值,結果為int類型</td>
</tr>
<tr>
<td>String getCharacterEncoding()</td>
<td>該方法用于返回請求消息的實體部分的字符集編碼,通常是從Content-Type頭字段中進行提取,結果為String類型</td>
</tr>
</tbody>
</table>
<br/>
**3. 獲取請求體信息**
在實際開發中,經常需要獲取用戶提交的表單數據,例如,用戶名,密碼、電子郵件等。
<table>
<thead>
<tr>
<th>方法聲明</th>
<th>功能描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>String getParameter(String name)</td>
<td>該方法用于獲取某個指定名稱的參數值,如果請求消息中沒有包含指定名稱的參數,getParameter()方法返回null;如果指定名稱的參數存在但沒有設置值,則返回一個空串;如果請求消息中包含有多個該指定名稱的參數,getParameter()方法返回第一個出現的參數值</td>
</tr>
<tr>
<td>String[] getParameterValues(String name)</td>
<td>HTTP請求消息中可以有多個相同名稱的參數(通常由一個包含有多個同名的字段元素的FORM表單生成),如果要獲得HTTP請求消息中的同一個參數名所對應的所有參數值,那么就應該使用getParameterValues()方法,該方法用于返回一個String類型的數組</td>
</tr>
<tr>
<td>Enumeration getParameterNames()</td>
<td>該方法用于返回一個包含請求消息中所有參數名的Enumeration對象,在此基礎上,可以對請求消息中的所有參數進行遍歷處理</td>
</tr>
<tr>
<td>Map getParameterMap()</td>
<td>個體Parameter Map()方法用于將請求消息中的所有參數名和值裝入進一個Map對象中返回</td>
</tr>
</tbody>
</table>