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() 方法获取指定的参数。

posted @ 2015-10-22 15:36  wenlj2000  阅读(817)  评论(0编辑  收藏  举报