首页 > 技术文章 > HttpServletRequest

sy130908 原文

HttpServletRequest介绍

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

二、Request常用方法

2.1、获得客户机信息

  getRequestURL方法返回客户端发出请求时的完整URL。
  getRequestURI方法返回请求行中的资源名部分。
  getQueryString 方法返回请求行中的参数部分。
  getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
  getRemoteAddr方法返回发出请求的客户机的IP地址。
  getRemoteHost方法返回发出请求的客户机的完整主机名。
  getRemotePort方法返回客户机所使用的网络端口号。
  getLocalAddr方法返回WEB服务器的IP地址。
  getLocalName方法返回WEB服务器的主机名。

范例:通过request对象获取客户端请求信息

    1. package gacl.request.study;
    2. import java.io.IOException;
    3. import java.io.PrintWriter;
    4. import javax.servlet.ServletException;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. /**
    9. * @author gacl
    10. * 通过request对象获取客户端请求信息
    11. */
    12. public class RequestDemo01 extends HttpServlet {
    13.  
    14.    public void doGet(HttpServletRequest request, HttpServletResponse response)
    15.            throws ServletException, IOException {
    16.        /**
    17.         * 1.获得客户机信息
    18.         */
    19.        String requestUrl = request.getRequestURL().toString();//得到请求的URL地址
    20.        String requestUri = request.getRequestURI();//得到请求的资源
    21.        String queryString = request.getQueryString();//得到请求的URL地址中附带的参数
    22.        String remoteAddr = request.getRemoteAddr();//得到来访者的IP地址
    23.        String remoteHost = request.getRemoteHost();
    24.        int remotePort = request.getRemotePort();
    25.        String remoteUser = request.getRemoteUser();
    26.        String method = request.getMethod();//得到请求URL地址时使用的方法
    27.        String pathInfo = request.getPathInfo();
    28.        String localAddr = request.getLocalAddr();//获取WEB服务器的IP地址
    29.        String localName = request.getLocalName();//获取WEB服务器的主机名
    30.        response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
    31.        //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
    32.        response.setHeader("content-type", "text/html;charset=UTF-8");
    33.        PrintWriter out = response.getWriter();
    34.        out.write("获取到的客户机信息如下:");
    35.        out.write("<hr/>");
    36.        out.write("请求的URL地址:"+requestUrl);
    37.        out.write("<br/>");
    38.        out.write("请求的资源:"+requestUri);
    39.        out.write("<br/>");
    40.        out.write("请求的URL地址中附带的参数:"+queryString);
    41.        out.write("<br/>");
    42.        out.write("来访者的IP地址:"+remoteAddr);
    43.        out.write("<br/>");
    44.        out.write("来访者的主机名:"+remoteHost);
    45.        out.write("<br/>");
    46.        out.write("使用的端口号:"+remotePort);
    47.        out.write("<br/>");
    48.        out.write("remoteUser:"+remoteUser);
    49.        out.write("<br/>");
    50.        out.write("请求使用的方法:"+method);
    51.        out.write("<br/>");
    52.        out.write("pathInfo:"+pathInfo);
    53.        out.write("<br/>");
    54.        out.write("localAddr:"+localAddr);
    55.        out.write("<br/>");
    56.        out.write("localName:"+localName);
    57.    }
    58.  
    59.    public void doPost(HttpServletRequest request, HttpServletResponse response)
    60.            throws ServletException, IOException {
    61.        doGet(request, response);
    62.    }
    63.  
    64. 2.2、获得客户机请求头

        getHeader(string name)方法:String 
        getHeaders(String name)方法:Enumeration 
        getHeaderNames()方法

      范例:通过request对象获取客户端请求头信息

      1. package gacl.request.study;
      2. import java.io.IOException;
      3. import java.io.PrintWriter;
      4. import java.util.Enumeration;
      5. import javax.servlet.ServletException;
      6. import javax.servlet.http.HttpServlet;
      7. import javax.servlet.http.HttpServletRequest;
      8. import javax.servlet.http.HttpServletResponse;
      9. /**
      10. * @author gacl
      11. * 获取客户端请求头信息
      12. * 客户端请求头:
      13. */
      14. public class RequestDemo02 extends HttpServlet {
      15.  
      16.    public void doGet(HttpServletRequest request, HttpServletResponse response)
      17.            throws ServletException, IOException {
      18.        response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
      19.        //通过设置响应头控制浏览器以UTF-8的编码显示数据
      20.        response.setHeader("content-type", "text/html;charset=UTF-8");
      21.        PrintWriter out = response.getWriter();
      22.        Enumeration<String> reqHeadInfos = request.getHeaderNames();//获取所有的请求头
      23.        out.write("获取到的客户端所有的请求头信息如下:");
      24.        out.write("<hr/>");
      25.        while (reqHeadInfos.hasMoreElements()) {
      26.            String headName = (String) reqHeadInfos.nextElement();
      27.            String headValue = request.getHeader(headName);//根据请求头的名字获取对应的请求头的值
      28.            out.write(headName+":"+headValue);
      29.            out.write("<br/>");
      30.        }
      31.        out.write("<br/>");
      32.        out.write("获取到的客户端Accept-Encoding请求头的值:");
      33.        out.write("<hr/>");
      34.        String value = request.getHeader("Accept-Encoding");//获取Accept-Encoding请求头对应的值
      35.        out.write(value);
      36.        
      37.        Enumeration<String> e = request.getHeaders("Accept-Encoding");
      38.        while (e.hasMoreElements()) {
      39.            String string = (String) e.nextElement();
      40.            System.out.println(string);
      41.        }
      42.    }
      43.  
      44.    public void doPost(HttpServletRequest request, HttpServletResponse response)
      45.            throws ServletException, IOException {
      46.        doGet(request, response);
      47.    }
      48.  
      49. }

推荐阅读