request中的方法小结

一.request常用方法

  1. getRequestURL方法返回客户端发出请求时的完整URL。
  2. getRequestURI方法返回请求行中的资源名部分。
  3. getQueryString方法返回请求行的参数部分。
  4. getRemoteAddr方法返回发出请求的客户机的IP地址。
  5. getRemoteHost方法返回发出请求的客户机的完整主机名。
  6. getRemotePort方法返回客户机所使用的网络端口号。
  7. getLocalAddr方法返回WEB服务器的IP地址。
  8. getLocalName方法返回WEB服务器的主机名。
  9. getMethod得到客户机请求方式。

二.获取客户端请求的头信息

  1. getHeader(String name) //用来获取你想要的头信息
  2. getHeaders(String name) //获取所有头信息的值
  3. 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 enu=request.getHeaderNames();
 while(enu.hasMoreElements()){
    String headerName=(String)enu.nextElement();
    String headerValue=request.getHeader(headerName);
    System.out.println(headerValue);
    }

三.获得客户端请求参数(客户端提交的数据)

  1. getParameter(String name) // 获得请求的参数的值
  2. getParameterNames() // 获得所有的参数名,返回Enumeration的实例
  3. getParameterValues(String name) // 获得所有的参数值,返回String数组
  4. getParameterMap() 方法,做框架时大量使用

举例

//1.getParameter(String name)的用法
jsp页面学员账户:"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&&iout.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 map = request.getParameterMap();  
    Set> set = map.entrySet();  
    Iterator> it = set.iterator();  
    while (it.hasNext()) {  
        Entry entry = it.next();  

        System.out.println("KEY:"+entry.getKey());  
        for (String i : entry.getValue()) {  
            System.out.println(i);  
        }  
    } 

你可能感兴趣的:(jsp,servlet)