首页 > 代码库 > request常用方法小结
request常用方法小结
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。
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 package com.yyz.request; 2 3 import java.io.IOException; 4 import java.io.OutputStream; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 public class RequestDemo extends HttpServlet {12 13 public void doGet(HttpServletRequest request, HttpServletResponse response)14 throws ServletException, IOException {15 /**16 * URL是URI的子集。17 * URI用来标识一个资源。18 * URL用来标识互联网上的一个资源。19 */20 System.out.println(request.getRequestURL());//得到请求URL地址21 System.out.println(request.getRequestURI());//得到请求的资源22 System.out.println(request.getQueryString());23 System.out.println(request.getRemoteAddr());//得到来访者IP24 System.out.println(request.getRemoteHost());25 //由于没有在dns上注册所以打印结果还是127.0.0.1,如果是百度访问这个程序,则打印www.baidu.com26 System.out.println(request.getRemotePort());//得到请求的资源27 System.out.println(request.getMethod());//得到请求的资源28 }29 30 public void doPost(HttpServletRequest request, HttpServletResponse response)31 throws ServletException, IOException {32 doGet(request,response);33 }34 35 }
在浏览器地址栏输入:http://localhost:8080/test/servlet/RequestDemo后后台输出入下图:
二获得客户机请求头:
1.getHeader(String name)方法
2.getHeaders(String name)方法
3.getHeaderNames()方法
1 package com.yyz.request; 2 3 import java.io.IOException; 4 import java.util.Enumeration; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 //获取请求头11 public class RequestDemo extends HttpServlet {12 13 public void doGet(HttpServletRequest request, HttpServletResponse response)14 throws ServletException, IOException {15 String head = request.getHeader("Accept-Encoding");16 //有些浏览器不支持压缩数据17 if(head.contains("gzip")){18 //输出压缩数据19 }else{20 //输出不压缩数据21 }22 //获取指定名称的头的所有值23 Enumeration e = request.getHeaders("Accept-Encoding");24 while(e.hasMoreElements()){25 String value =http://www.mamicode.com/ (String ) e.nextElement();26 System.out.println(value);27 }28 System.out.println("------------------------");29 //获取所有的头和值30 e = request.getHeaderNames();31 while(e.hasMoreElements()){32 String name = (String)e.nextElement();33 String value =http://www.mamicode.com/ request.getHeader(name);34 System.out.println(name+"="+value);35 }36 }37 38 public void doPost(HttpServletRequest request, HttpServletResponse response)39 throws ServletException, IOException {40 doGet(request,response);41 }42 43 }
在浏览器访问该程序,后台输出如下:
三获得客户机请求参数(客户端提交的数据):
1.getParameter(name)方法
2.getParameterValues(String name)方法
3.getParameterNames方法
4.getParameterMap方法,做框架时大量使用
1 package com.yyz.request; 2 3 import java.io.IOException; 4 import java.util.Enumeration; 5 import java.util.Map; 6 import java.util.Map.Entry; 7 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 //获取请求数据13 public class RequestDemo extends HttpServlet {14 15 public void doGet(HttpServletRequest request, HttpServletResponse response)16 throws ServletException, IOException {17 //http://localhost:8080/test/servlet/RequestDemo?name=yyz18 String value = http://www.mamicode.com/request.getParameter("name");19 System.out .println(value);20 //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance21 String likes[] = request.getParameterValues("like");22 if(likes!=null){23 for(String like : likes){24 System.out.println(like);25 }26 }27 //下面是这种遍历的专业写法,获取数组数据的方式(可避免空指针异常)28 for(int i=0;likes!=null&&i<likes.length;i++){29 System.out.println(likes[i]);30 }31 //获取所有名称,并根据名称获取值32 Enumeration e = request.getParameterNames();33 while(e.hasMoreElements()){34 String name = (String) e.nextElement();35 value =http://www.mamicode.com/ request.getParameter(name);36 System.out.println(name+"="+value);37 }38 System.out.println("----------------------");39 //得到request对象中用来封装数据的Map集合40 Map<String,String[]> map = request.getParameterMap();41 for(Entry<String, String[]> me : map.entrySet()){42 String name = me.getKey();43 String [] v = me.getValue();44 System.out.println(name+"="+v[0]);45 }46 47 } 48 49 public void doPost(HttpServletRequest request, HttpServletResponse response)50 throws ServletException, IOException {51 doGet(request,response);52 }53 54 }
request常用方法小结