HttpServletRequst对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户端信息。
Request
request常用方法
getMethod()返回请求方法。 getHeader()返回特定头的值。 getHeaders()如果某个头有多个值,用这个方法。 getHeaderNames()获得所有请求头的名称。
- request获取表单提交的数据
<body>
<a href="/day06/servlet/RequestDemo2?username=yjnb">点</a>
<form action="/day06/servlet/RequestDemo2" method="get">
用户名1:<input type="text" name="username"/><br/>
用户名2:<input type="text" name="username"/><br/>
密 码:<input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("获取数据方式1");
String value = request.getParameter("username");
if(value!=null && !value.trim().equals("")){
System.out.println(value);
}
System.out.println("获取数据方式2");
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement();
value = request.getParameter(name);
System.out.println(name+"="+value);
}
System.out.println("获取数据方式3");
String[] values = request.getParameterValues("username");
for(int i=0;values!=null && i<values.length;i++){
System.out.println(values[i]);
}
}
- request乱码问题
浏览器通过表单提交“中国”,使用的是UTF-8码表,而request获取时使用的是ISO-8859码表。
解决方法:在post方法中,
request.setCharacterEncoding("UTF-8");
在get方法中,需要手工处理。先获得数据,在对数据换一个码表表示。
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859"),"UTF-8");
request.getAttribute是获取之前存在域中的数据,request,getParameter是获取客户机传过来的数据。