servlet_request获取请求头和请求数据
request几个常用的方法
1 //客户端IP 2 System.out.println(request.getRemoteAddr()); 3 //客户端如果在DNS注册,就返回注册那个名称,如果没有,就返回IP 4 System.out.println(request.getRemoteHost()); 5 //http://..........servlet?name=sdfasdf,返回name=sdfasdf 6 System.out.println(request.getQueryString()); 7 System.out.println("*********************************"); 8 //返回客户端浏览器所用的端口,这个是变的 9 System.out.println(request.getLocalPort()); 10 //返回客户端的地址,本机返回localhost 11 System.out.println(request.getLocalName()); 12 System.out.println("*********************************"); 13 //返回请求地址,例如http://localhost:8080/day03/servlet/RequestDemo1, 14 //那么这个方法就返回day03/servlet/RequestDemo1 15 System.out.println(request.getRequestURI()); 16 //返回资源在互联网的地址,http://localhost:8080/day03/servlet/RequestDemo1 17 System.out.println(request.getRequestURL()); 18 //返回请求方式 19 System.out.println(request.getMethod());
下面取数据,我总结了五种方式
1 System.out.println("------------------获取方式1------------------"); 2 request.getParameter("username"); 3 4 System.out.println("------------------获取方式2------------------"); 5 Enumeration e = request.getParameterNames(); 6 while(e.hasMoreElements()){ 7 String str = (String) e.nextElement(); 8 String value = request.getParameter(str); 9 System.out.println(str + "=" + value); 10 } 11 12 System.out.println("------------------获取方式3------------------"); 13 //这个获取如果客户端提交两个username,就用这个 14 request.getParameterValues("username"); 15 16 System.out.println("------------------获取方式4------------------"); 17 Map map = request.getParameterMap(); 18 User user = new User(); 19 try { 20 /* 21 通过request.getParameterMap()获取全部的数据 22 这里用到BeanUtils的populate方法,它会自动给你 23 装载到这个user类里面 24 这个user类,一般情况我们是按照提交的表单来设计 25 BeanUtils还有一个方法copyProperties,它可以帮助我们 26 把formbean符合user的属性进行copy 27 28 这是做框架用的 29 */ 30 BeanUtils.populate(user, map); 31 // BeanUtils.copyProperties(user, formbean); //bean拷贝 32 } catch (Exception e1) { 33 e1.printStackTrace(); 34 } 35 36 System.out.println("------------------获取方式5------------------"); 37 /* 38 * 这个方式我没测试,但是肯定能获取到 39 * */ 40 InputStream in = request.getInputStream(); 41 int len; 42 byte[] buffer = new byte[1024]; 43 while((len = in.read(buffer)) > 0){ 44 System.out.println(new String(buffer,0,len)); 45 }
上面有一个方式用到了BeanUtils,如果大家想测试这个,就下载一个BeanUtls,注意啊,这个BeanUtils在运行是需要一个logger4j.jar的支持
如果有使用请标明来源:http://www.cnblogs.com/duwenlei/