本節來介紹request,request是請求的意思.請求是由客戶端發起的,每當客戶端發起一個請求訪問servlet的時候,tomcat都會創建一個request對象封裝這些請求的信息.
所以request對象主要裝了請求信息來供我們方便的獲取請求信息來處理業務。
HttpServletRequest
同樣HttpServletRequest繼承了ServletRequest來實現更強大的功能。
既然request幫我們封裝好了請求信息,那我們就得知道怎麼來通過request獲取請求信息
首先先了解下Http請求的結構,在谷歌瀏覽器中,request請求如下所示:
request獲取請求行
非常重要的一個方法.
getContextPath();//獲取項目名稱
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//獲取項目名稱
String path = request.getContextPath();
System.out.println(path);
}
啓動tomcat,運行該servlet
結果如下所示:
我的項目名稱是qjq.
這個方法很重要.用於獲取項目名稱時就用這個方法。這樣就不會在你修改了項目名稱後還要一個一個去修改使用了項目名稱的地方.
還有以下幾個請求行方法.
String getMethod();//獲取請求方式,get,post等
String getRequestURI();//注意是URI,獲取項目相對路徑,/qjq/ServletDemo
StringBuffer getRequestURL();//注意是URL,獲取請求全路徑,http://localhost:8017/qjq/ServletDemo
String getQueryString();//獲取get請求後的參數字符串
String getRemoteHost();//獲取訪問的主機名
String getRemoteAddr();//獲取訪問的ip地址
。。。
request獲取請求頭
String getHeader(String);//根據key獲取value
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//獲取Accept的值
String header = request.getHeader("Accept");
System.out.println(header);
}
結果如下所示:
這個getHeader(String)方法很重要.獲取請求頭的方法基本就用這一個。
request獲取請求體
這部分是我們經常要用的。我們使用request主要就是獲取請求體中的信息.
有這麼一個form表單。提交方式是post
<form action="http://localhost:8017/qjq/ServletDemo" method="post">
<input name="name" value="user"/>
<input name="pwd" value="pwd"/>
<input type="submit" value="提交" />
</form>
其中name屬性就是key,value屬性也就是在input中的值就是value.
request能夠根據name來獲取對應的input的值
點擊提交後會發起一個post請求。其中請求體就是這樣的
獲取name和pwd的常用方法:
1,getParameter(String);//根據key獲取value.這裏的key就是form表單input裏面的name.
2,getParameterMap();//將key和value作爲一個鍵值對封裝在一個map中
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//getParameter方法
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
System.out.println(name+","+pwd);
//getParameterMap()方法
Map<String, String[]> parameterMap = request.getParameterMap();
for(Map.Entry<String,String[]> entry:parameterMap.entrySet()){
System.out.println(entry.getKey()+"-"+ Arrays.toString(entry.getValue()));
}
}
然後點擊提交發起post請求
結果如下,這樣就可以獲取name和pwd了對應的值了。
getParameter(String);方法
這是getParameterMap()方法
如果你連接了數據庫.那麼這樣就能夠做一個簡單的登入功能了。
基本登入步驟如下
1,瀏覽器輸入name和pwd點擊登入發送到後臺
2,使用getParameter獲取name和pwd對應的值
3,從數據庫獲取信息進行對比.