zoukankan      html  css  js  c++  java
  • java如何得到GET和POST请求URL和参数列表

    转载:http://blog.csdn.net/yaerfeng/article/details/18942739

    在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径

    1. package com.zuidaima                          
    2. import java.io.IOException;  
    3. import java.io.PrintWriter;  
    4. import java.util.Map;  
    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 GetParams extends HttpServlet {  
    12.     private static final long serialVersionUID = 1L;  
    13.   
    14.     public GetParams() {  
    15.         super();  
    16.     }  
    17.   
    18.     protected void doGet(HttpServletRequest request,  
    19.             HttpServletResponse response) throws ServletException, IOException {  
    20.         PrintWriter writer = response.getWriter();  
    21.         writer.println("GET " + request.getRequestURL() + " "  
    22.                 + request.getQueryString());  
    23.   
    24.         Map<String, String[]> params = request.getParameterMap();  
    25.         String queryString = "";  
    26.         for (String key : params.keySet()) {  
    27.             String[] values = params.get(key);  
    28.             for (int i = 0; i < values.length; i++) {  
    29.                 String value = values[i];  
    30.                 queryString += key + "=" + value + "&";  
    31.             }  
    32.         }  
    33.         // 去掉最后一个空格  
    34.         queryString = queryString.substring(0, queryString.length() - 1);  
    35.         writer.println("GET " + request.getRequestURL() + " " + queryString);  
    36.     }  
    37.   
    38.     protected void doPost(HttpServletRequest request,  
    39.             HttpServletResponse response) throws ServletException, IOException {  
    40.         PrintWriter writer = response.getWriter();  
    41.         Map<String, String[]> params = request.getParameterMap();  
    42.         String queryString = "";  
    43.         for (String key : params.keySet()) {  
    44.             String[] values = params.get(key);  
    45.             for (int i = 0; i < values.length; i++) {  
    46.                 String value = values[i];  
    47.                 queryString += key + "=" + value + "&";  
    48.             }  
    49.         }  
    50.         // 去掉最后一个空格  
    51.         queryString = queryString.substring(0, queryString.length() - 1);  
    52.         writer.println("POST " + request.getRequestURL() + " " + queryString);  
    53.     }  
    54. }  
    55.   
    56.                       

    PUT 请求获取不到参数,是因为 PUT 请求的参数不是存放在 HTTP Header 中的,而是在 HTTP Body 中,所以无法通过 request.getParameter() 方法来获取参数。

    如果想要获取 PUT 请求的参数,可以参考如下这段代码:

    1
    2
    3
    4
    5
    6
    String queryString = "";
    BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        queryString += line;
    }

    拿到了 queryString,它是一个“a=1&b=2”格式的字符串,然后可以轻松的转换成一个 Map,最后通过 map.get() 方法获取指定的参数。

  • 相关阅读:
    [Objective-C语言教程]继承(25)
    [Objective-C语言教程]类和对象(24)
    [Objective-C语言教程]命令行参数(23)
    [Objective-C语言教程]错误处理(22)
    [Objective-C语言教程]日志处理(21)
    转 路径中 斜杠/和反斜杠 的区别
    转 Oracle 12C 之 CDB/PDB用户的创建与对象管理
    win10怎么启用网络发现,网络发现已关闭怎么办
    转 Oracle12c/11个 Client安装出现"[INS-30131]"错误“请确保当前用户具有访问临时位置所需的权限”解决办法之完整版
    转 Oracle DBCA高级玩法:从模板选择、脚本调用到多租户
  • 原文地址:https://www.cnblogs.com/wenlj/p/4901213.html
Copyright © 2011-2022 走看看