HttpServletRequest

本文详细介绍了如何使用HttpServletRequest对象来获取客户端的请求信息,包括URL、请求方法、IP地址、请求头等,并提供了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. }

转载于:https://www.cnblogs.com/sy130908/p/11584637.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值