一.request常用方法
- getRequestURL方法返回客户端发出请求时的完整URL。
- getRequestURI方法返回请求行中的资源名部分。
- getQueryString方法返回请求行的参数部分。
- getRemoteAddr方法返回发出请求的客户机的IP地址。
- getRemoteHost方法返回发出请求的客户机的完整主机名。
- getRemotePort方法返回客户机所使用的网络端口号。
- getLocalAddr方法返回WEB服务器的IP地址。
- getLocalName方法返回WEB服务器的主机名。
- getMethod得到客户机请求方式。
二.获取客户端请求的头信息
- getHeader(String name) //用来获取你想要的头信息
- getHeaders(String name) //获取所有头信息的值
- getHeaderNames() //获取头信息的名字和值
举例
request.getHeader("Host") //请求的地址。
request.getHeader("Referer") //请求的完整地址。
request.getHeader("Accept-Language")//语言
request.getHeader("User-agent") //返回客户端浏览器的版本号
getHeaders(String name)这个方法返回结果集是一个Enumeration(枚举)类的实例,包含指定头信息的所有值
如:
Enumeration e = request.getHeaders("Accept-Encoding");
while(e.hasMoreElements()){
String value = (String ) e.nextElement();
System.out.println(value); //输出指定信息的所有值
}
getHeaderNames();这个方法返回结果集是一个Enumeration(枚举)类的实例,包含所有头和值
Enumeration<String> enu=request.getHeaderNames();
while(enu.hasMoreElements()){
String headerName=(String)enu.nextElement();
String headerValue=request.getHeader(headerName);
System.out.println(headerValue);
}
三.获得客户端请求参数(客户端提交的数据)
- getParameter(String name) // 获得请求的参数的值
- getParameterNames() // 获得所有的参数名,返回Enumeration的实例
- getParameterValues(String name) // 获得所有的参数值,返回String数组
- getParameterMap() 方法,做框架时大量使用
举例
//1.getParameter(String name)的用法
jsp页面学员账户:<input type="text" name="username">
servlet:String name=req.getParameter("username");
// 2.getParameterNames()的用法
String values="";
Enumeration params = req.getParameterNames(); // 获得所有请求参数名
while (params.hasMoreElements()) {
String name = params.nextElement().toString();
String[] value = req.getParameterValues(name);
for (int i = 0; i < value.length; i++) {
values = values + value[i];
}
}
// 3.getParameterValues(String name)的用法
//getParameterValues这个方法是获得传过来的参数名相同的一个数组;
//比如:url="a.do?name=2321&name=42423&name=3432";
//String[] name=request.getParameterValues("name");获得就是一个数组
String likes[] = request.getParameterValues("like");
if(likes!=null){
for(String like : likes){
System.out.println(like);
}
}
//下面是这种遍历的专业写法,获取数组数据的方式(可避免空指针异常)
for(int i=0;likes!=null&&i<likes.length;i++){
System.out.println(likes[i]);
}
//4.getParameterMap()的用法
request.getParameterMap()的返回类型是Map类型的对象,也就是符合key-value的对应关系,但这里要注
意的是,value的类型是String[],而不是String.
得到jsp页面提交的参数很容易,但通过它可以将request中的参数和值变成一个map,以下是将得到的参数和值
打印出来,形成的map结构:map(key,value[]),即:key是String型,value是String型数组。
例如:request中的参数t1=1&t1=2&t2=3
形成的map结构:
key=t1;value[0]=1,value[1]=2
key=t2;value[0]=3
如果直接用map.get("t1"),得到的将是:Ljava.lang.String; value只所以是数组形式,就是防止参数名有相同的
情况。
jdk1.4
Map map = new HashMap();
Set set = map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
Entry entry = (Entry) it.next();
String[] tmp = (String[]) entry.getValue();
for (int i = 0; i < tmp.length; i++) {
System.out.println(tmp[i]);
}
}
JDK1.5版本
Map<String, String[]> map = request.getParameterMap();
Set<Entry<String, String[]>> set = map.entrySet();
Iterator<Entry<String, String[]>> it = set.iterator();
while (it.hasNext()) {
Entry<String, String[]> entry = it.next();
System.out.println("KEY:"+entry.getKey());
for (String i : entry.getValue()) {
System.out.println(i);
}
}