HttpServletRequest對象簡介_動力節(jié)點Java學(xué)院整理
通過getMethod方法獲得的是客戶端訪問該web應(yīng)用的Http請求方式。
代碼和結(jié)果如下:
String requestMethod = request.getMethod(); System.out.println(requestMethod);
想獲取客戶端發(fā)來的HTTP請求頭中的內(nèi)容可以使用如下方法:
getDateHeader()
getHeader(String)
getHeaderNames()
getHeaders(String)
getIntHeader(String);
這些方法在各個特定的情況下能有不同的用途,體現(xiàn)出獲取客戶端請求頭方式的多樣性。
如通過getHeader(String)可以獲取指定請求頭的數(shù)據(jù)內(nèi)容:
String connectionState = request.getHeader("Connection"); System.out.println(connectionState);
而通過getHeaderNames()可以獲取發(fā)送的所有請求頭,例:
Enumeration e = request.getHeaderNames(); while(e.hasMoreElements()) { String headerName = (String) e.nextElement(); String headerValue = request.getHeader(headerName); System.out.println(headerName+":"+headerValue); }
而通過getHeaders(String)方法獲取的是某個同名頭的內(nèi)容,適用于當(dāng)某個請求頭有多個內(nèi)容時使用。
介紹完獲取請求行和請求頭,下面介紹獲取請求數(shù)據(jù)中內(nèi)容的方法:
getPatameter(String)
getParameterNames()
getParameterValues(String)
getParameterMap()
和getInputStream()
使用getPatameter(String)方式可以獲取請求數(shù)據(jù)中指定的數(shù)據(jù)值
代碼如下:
String value = request.getParameter("username"); System.out.println(value);
常可以在瀏覽器地址URL后直接寫入?yún)?shù)數(shù)據(jù)來模擬GET方式:
最終在控制臺得到:
通過getParameterNames()可以獲取多個參數(shù):
Enumeration e = request.getParameterNames(); while(e.hasMoreElements()) { String paramName = (String)e.nextElement(); String paramValue = request.getParameter(paramName); System.out.println(paramName+":"+paramValue); }
使用getParameterValues(String)有助于獲取當(dāng)請求數(shù)據(jù)參數(shù)名有相同時的情況:
比如下面這種情況:
代碼:
String[] values = request.getParameterValues("username"); for(int i=0;i<values.length;i++) { System.out.println(values[i]); }
在控制臺觀察:
(注意:像getPatameter(String)、getParameterValues(String)等等這樣的方法,都要小心空指針異常,可能的原因在于并沒有這樣的參數(shù),還有一種就是在URL后沒有任何參數(shù)傳入,所以要特別注意,應(yīng)該加入健壯性判斷。這也是編程過程中會碰到傳入?yún)?shù)都應(yīng)該注意的問題。)
使用getParameterMap()可以獲取以請求數(shù)據(jù)中參數(shù)和參數(shù)值作為的鍵值對的Map集合。這樣我們就能同時獲取鍵值對。假設(shè)有如下情況:
代碼為:
Map<String,String[]> map = request.getParameterMap(); for(Map.Entry<String, String[]> entry :map.entrySet()) { String paramName = entry.getKey(); for(int i=0;i<entry.getValue().length;i++){ String paramValue = entry.getValue()[i]; System.out.println(paramName+":"+paramValue); } }
如果請求數(shù)據(jù)參數(shù)為:
那么在控制臺上看到的則是:
以上說明了常用的獲取數(shù)據(jù)的方式,還有一種屬于request響應(yīng)對象的getInutStream方法,而這個方法一般只用于大容量的數(shù)據(jù)獲取,比如文件上傳,將在之后的篇章中介紹。
下面介紹其他常用方法
通過getRequestURI方法和getRequestURL可以獲取http請求服務(wù)器資源的URI和URL,關(guān)于URI和URL的區(qū)別可以通過獲取后的字符串來查看:
代碼:
String fileURI = request.getRequestURI(); System.out.println("URI: "+fileURI); StringBuffer fileURL = request.getRequestURL(); System.out.println("URL: "+fileURL.toString());
訪問該Servlet,得到:
可以看出URI只包括在服務(wù)器中的web應(yīng)用名和資源對外訪問路徑(虛擬目錄)。
通過getQueryString()方法可以獲取URL上由GET方式帶來的參數(shù):
若代碼為:
System.out.println(request.getQueryString());
而我在訪問這個Servlet的URL上添加:“?username=fjdingsd&password=123”:
那么當(dāng)訪問這個Servlet之后,在MyEclipse的控制臺將看到:
通過getRemoteAddr方法可以獲取訪問該web應(yīng)用的客戶端IP地址。
代碼:
System.out.println(request.getRemoteAddr());
而通過getRemoteHost方法獲取的是訪問該web應(yīng)用的客戶端主機名,如果沒有在DNS服務(wù)器上注冊的則是獲取IP地址。這里說的主機名是指在DNS上注冊的,比如www.baidu.com,那么通過該方法如果從該主機上來訪問,則獲取到的是:baidu.com。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring 校驗(validator,JSR-303)簡單實現(xiàn)方式
這篇文章主要介紹了Spring 校驗(validator,JSR-303)簡單實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu)
這篇文章主要介紹了springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05springboot+webmagic實現(xiàn)java爬蟲jdbc及mysql的方法
今天小編就為大家分享一篇springboot+webmagic實現(xiàn)java爬蟲jdbc及mysql的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08SpringBoot用JdbcTemplates操作Mysql實例代碼詳解
JdbcTemplate是Spring框架自帶的對JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對數(shù)據(jù)庫的操作更加方便、友好,效率也不錯,這篇文章主要介紹了SpringBoot用JdbcTemplates操作Mysql2022-10-10