不同请求类型的参数获取

我们可以通过

  1. request.getParameter
  2. 读取requust.inputStream

获取请求参数


 

get                                url参数                                                                 body中的参数
        json              getparameter只能获取url参数                            只能通过inputStream获取body中的参数
        form-data     两者都只能通过getParam获取                           inputStream中获取不到body中的参数
        x-www-         getparam只能获取url参数,body里的不行           只能从inputStream中获取body中的参数

post
        json              getparam只能获取url参数                                   只能从inputStream获取
        form-data     两者都只能通过getParam获取                            从inputStream中获取不到
        x-www-         getparam可以获取url和body中的参数                只能从inputStream获取


 

1.  读取inputstream 

String bodyStr = null;
BufferedReader br = request.getReader();
String str;
while ((str = br.readLine()) != null) {
bodyStr.append(str);
}    

2.转成Map

    content-type=application/json 时 , json转map

Map map = JSON.parseObject(body,Map.class);

content-type=application/json 时,k1=v1&k2=v2... 类型的字符串转map

Arrays.stream(body.split("&"))
                  .filter(kv -> kv.contains("="))
                  .map(kv -> kv.split("="))
                  .forEach(array -> {
                    map.put(array[0],array[1]);
                  });

 

request的inputStream只能读取一次,多次读取需要 重写HttpServletRequestWrapper

可参考: https://my.oschina.net/serge/blog/1094063

上一篇:MySQL的ibdata1文件占用过大


下一篇:Socket文件