细心的朋友发现Servlet的执行方法doXXX方法都带中二个类型为HttpServletRequest、HttpServletResponse的参数,通过这二个变量我们可以取请求信息与向客户端做出响应。本节小傅老师与大伙聊聊HttpServletReqeust。
HttpServletRequest
HttpServletReqeust是一个继承自ServletRequest,由容器负责创建实例,它通常作为Servlet的服务方法的参数(doGet,doPost,doDelete等)。客户端的IP、端口、参数、cookie、session等请求信息它都可以取得,是Servlet中最常用的接口之一。
常用方法
getRemoteAddr
取得请求端的IP地址
getParamter
取得请求参数
getAttribute
取得属性
GetRequestURL
取得请求的URL
getCookies
取得客户端传来的cookies
getSession
取得会话实例
setContentType
设定MIME格式
setAttribute
设定属性
演示
/**
* 显示HttpServletRequest接口中常用方法
* 作者:樊建华
* 日期:2017/2/9
*/
@Override
protectedvoiddoPost(HttpServletRequestreq,
HttpServletResponseresp)
throwsServletException, IOException {
//取得请求端的IP地址
Stringaddr=req.getRemoteAddr();
//取得请求端的端口号
Integerport=req.getRemotePort();
//取得请求的url
Stringurl=req.getRequestURL().toString();
//取得客户端的cookie
Cookiecookies[]=req.getCookies();
//取得会话接口实例
HttpSessionsession=req.getSession();
//根据参数名称取得参数值
StringparamName="uname";
StringparamName_value=req.getParameter("uname");
//根据属性名称取得其值
StringattrName="aname";
ObjectattrName_value=req.getAttribute(attrName);
//向控制台输出信息
System.out.println("你请求的IP为:"+addr+"\t端口为:"+port);
System.out.println("请不要做非法操作,我们会保存您的IP和操作记录");
System.out.println("参数名为uname的值为:"+paramName_value);
System.out.println("属性名为aname的值为:"+attrName_value);
}
取得请求参数
取得请求参数是servlet最为频繁的操作之一,它根据参数名称来取得其值。参数的名称我们可以理解为表单控件名称,一般情况表单控件是唯一,但有时也会存在同名控件。Servlet针对每种情况都提供了相应的方法。
比如我们要取得以下表单的【uname】与【interest】参数的值,我们可以这么操作。
"http://localhost/fjhweb/req.do"method="get">
用户名:"text"name="uname"/>
爱好:"checkbox"name="interest"value="编程"/>男
"checkbox"name="interest"value="写书"/>女
"submit"value="提交"/>
取得uname
整个表单中只有一个名为uname的控件,可以使用getParameter()获取
//根据参数名称取得参数值
StringparamName="uname";
StringparamName_value=req.getParameter("uname");
取得interest
表单中有二个控件都叫“interest”,此时如还采用getParameter()将不能完整的取到值。这种情况我们应该调整为getParamterValues()方法。
StringparamInterest="interest";//就是表单控件名称
//由于传过来二个名都叫interest的参数,我们要用getParamterValues()方法
//并用一个字符数组接收其值
StringparamInterest_value[] =req.getParameterValues(paramInterest);
由HttpServletRequest接口中引申出来的知识点非常多,小傅老师会陆续给大家讲解。