欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第4章:作为Servlet:请求和响应/4.2 请求

程序员文章站 2022-03-02 22:22:32
...
  • HTTP所有方法汇总

  1. GET:获取服务器上的资源,如果HTML中没有指定方法则默认是GET方法
  2. POST:修改服务器上的资源
  3. HEAD:只要求获取首部部分,有点像GET,但是没有响应体
  4. TRACE:要求服务端返回请求消息
  5. PUT:消息体放在URL资源上
  6. DELETE:删除URL上的资源
  7. OPTIONS:获取HTTP方法列表
  8. CONNECT:要求连接以便建立隧道
  • GET和POST区别

  1. GET的参数附加到URL后面,POST参数在消息体重
  2. GET参数有字节限制,POST没有
  3. GET参数暴露安全性
  4. GET约定不能修改数据,POST可以修改数据
  • 关于幂等性

  1. 概念:就是每次请求等到的结果都是一样的
  2. 幂等的方法
    1. GET
    2. HEAD
  3. 非幂等的方法
    1. POST
    2. PUT

 

  • 请求头部获取

  1. 获取方法
    //打印头部
    
               Enumeration<String> enumeration = request.getHeaderNames();
    
               while(enumeration.hasMoreElements()){
    
                    String name = enumeration.nextElement();
    
                    System.out.println("[" + name+"]:");
    
                    Enumeration<String> enumeration2 = request.getHeaders(name);
    
                    while(enumeration2.hasMoreElements()){
    
                         System.out.println("  " + enumeration2.nextElement());
    
                    }
    
               }

     

  2. 打印结果

    [host]:

      127.0.0.1:8081

    [connection]:

      keep-alive

    [cache-control]:

      max-age=0

    [origin]:

      http://127.0.0.1:8081

    [upgrade-insecure-requests]:

      1

    [user-agent]:

      Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    [content-type]:

      application/x-www-form-urlencoded

    [accept]:

      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    [referer]:

      http://127.0.0.1:8081/myWeb/form.html

    [accept-encoding]:

      gzip, deflate, br

    [accept-language]:

      zh-CN,zh;q=0.9

    [content-length]:body长度

      11

  • 请求参数获取(无论get/post)

  1. 参数形式都是:key=value&key=value&key=value
    //获取参数名列表和参数对应的值
    
               Enumeration<String> enumeration2 = request.getParameterNames();
    
               while(enumeration2.hasMoreElements()){
    
                    String name = enumeration2.nextElement();
    
                    System.out.println("[" + name+"]:");
    
                    String []values = request.getParameterValues(name);
    
                    for (String string : values) {
    
                         System.out.println(string);
    
                    }
    
                    
    
               }

     

  2. 获取参数名和参数名对应的值

    [color]:

    light

    [color2]:

    write