細(xì)心的朋友發(fā)現(xiàn)Servlet的執(zhí)行方法doXXX方法都帶中二個(gè)類型為HttpServletRequest戳气、HttpServletResponse的參數(shù)疫诽,通過(guò)這二個(gè)變量我們可以取請(qǐng)求信息與向客戶端做出響應(yīng)评姨。本節(jié)小傅老師與大伙聊聊HttpServletReqeust奴曙。
HttpServletRequest
HttpServletReqeust是一個(gè)繼承自ServletRequest奶甘,由容器負(fù)責(zé)創(chuàng)建實(shí)例赛蔫,它通常作為Servlet的服務(wù)方法的參數(shù)(doGet,doPost,doDelete等)裤唠〖放#客戶端的IP、端口种蘸、參數(shù)墓赴、cookie、session等請(qǐng)求信息它都可以取得航瞭,是Servlet中最常用的接口之一诫硕。
常用方法
getRemoteAddr
取得請(qǐng)求端的IP地址
getParamter
取得請(qǐng)求參數(shù)
getAttribute
取得屬性
GetRequestURL
取得請(qǐng)求的URL
getCookies
取得客戶端傳來(lái)的cookies
getSession
取得會(huì)話實(shí)例
setContentType
設(shè)定MIME格式
setAttribute
設(shè)定屬性
演示
/**
* 顯示HttpServletRequest接口中常用方法
* 作者:樊建華
* 日期:2017/2/9
*/
@Override
protectedvoiddoPost(HttpServletRequestreq,
HttpServletResponseresp)
throwsServletException, IOException {
//取得請(qǐng)求端的IP地址
Stringaddr=req.getRemoteAddr();
//取得請(qǐng)求端的端口號(hào)
Integerport=req.getRemotePort();
//取得請(qǐng)求的url
Stringurl=req.getRequestURL().toString();
//取得客戶端的cookie
Cookiecookies[]=req.getCookies();
//取得會(huì)話接口實(shí)例
HttpSessionsession=req.getSession();
//根據(jù)參數(shù)名稱取得參數(shù)值
StringparamName="uname";
StringparamName_value=req.getParameter("uname");
//根據(jù)屬性名稱取得其值
StringattrName="aname";
ObjectattrName_value=req.getAttribute(attrName);
//向控制臺(tái)輸出信息
System.out.println("你請(qǐng)求的IP為:"+addr+"\t端口為:"+port);
System.out.println("請(qǐng)不要做非法操作,我們會(huì)保存您的IP和操作記錄");
System.out.println("參數(shù)名為uname的值為:"+paramName_value);
System.out.println("屬性名為aname的值為:"+attrName_value);
}
取得請(qǐng)求參數(shù)
取得請(qǐng)求參數(shù)是servlet最為頻繁的操作之一刊侯,它根據(jù)參數(shù)名稱來(lái)取得其值章办。參數(shù)的名稱我們可以理解為表單控件名稱,一般情況表單控件是唯一滔吠,但有時(shí)也會(huì)存在同名控件纲菌。Servlet針對(duì)每種情況都提供了相應(yīng)的方法。
比如我們要取得以下表單的【uname】與【interest】參數(shù)的值疮绷,我們可以這么操作翰舌。
"http://localhost/fjhweb/req.do"method="get">
用戶名:"text"name="uname"/>
愛(ài)好:"checkbox"name="interest"value="編程"/>男
"checkbox"name="interest"value="寫(xiě)書(shū)"/>女
"submit"value="提交"/>
取得uname
整個(gè)表單中只有一個(gè)名為uname的控件,可以使用getParameter()獲取
//根據(jù)參數(shù)名稱取得參數(shù)值
StringparamName="uname";
StringparamName_value=req.getParameter("uname");
取得interest
表單中有二個(gè)控件都叫“interest”冬骚,此時(shí)如還采用getParameter()將不能完整的取到值椅贱。這種情況我們應(yīng)該調(diào)整為getParamterValues()方法。
StringparamInterest="interest";//就是表單控件名稱
//由于傳過(guò)來(lái)二個(gè)名都叫interest的參數(shù)只冻,我們要用getParamterValues()方法
//并用一個(gè)字符數(shù)組接收其值
StringparamInterest_value[] =req.getParameterValues(paramInterest);
由HttpServletRequest接口中引申出來(lái)的知識(shí)點(diǎn)非常多庇麦,小傅老師會(huì)陸續(xù)給大家講解。