POST请求数据量过大解决方案_JAVA

26人阅读 评论(0) 收藏 举报
分类:
String param = ParamsUtil.getStreamToString(getRequest()); // 接收流参数并转成字符串
Map<String, String> params = ParamsUtil.getUrlParams(param); // 将字符串参数转Map

package com.chinagdn.utils;

import org.apache.commons.lang3.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class ParamsUtil {
    /**
     * 将url参数转换成map
     * @param param aa=11&bb=22&cc=33
     * @return
     */
    public static Map<String, String> getUrlParams(String param) {
        Map<String, String> map = new HashMap<>(0);
        if (StringUtils.isBlank(param)) {
            return map;
        }
        String[] params = param.split("&");
        for (int i = 0; i < params.length; i++) {
            int index = params[i].indexOf("=");
            if (index != -1) {
                map.put(params[i].substring(0, index), params[i].substring(index+1));
            }
        }
        return map;
    }

    /**
     * 将map转换成url
     * @param map
     * @return
     */
    public static String getUrlParamsByMap(Map<String, Object> map) {
        if (map == null) {
            return "";
        }
        StringBuffer sb = new StringBuffer();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            sb.append(entry.getKey() + "=" + entry.getValue());
            sb.append("&");
        }
        String s = sb.toString();
        if (s.endsWith("&")) {
            s = org.apache.commons.lang.StringUtils.substringBeforeLast(s, "&");
        }
        return s;
    }

    /**
     * 以流的方式接收参数, 并转成字符串
     * @param request
     * @return
     */
    public static String getStreamToString(HttpServletRequest request) {

        try {
            InputStream inputStream;
            inputStream = request.getInputStream();

            //建立接收流缓冲,准备处理
            StringBuffer requestBuffer = new StringBuffer();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
            //读入流,并转换成字符串
            String readLine;
            while ((readLine = reader.readLine()) != null) {
                requestBuffer.append(readLine);

            }
            reader.close();
            return java.net.URLDecoder.decode(requestBuffer.toString(), "utf-8");
        } catch(Exception e) {
            e.printStackTrace();
            return "";
        }
    }
}

还有一种说法是修改tomcat配置文件

maxPostSize="-1"   // tomcat7+

maxPostSize="0"   // tomcat7-


查看评论

Java Post 数据请求和接收

最近做项目时,发现手机客户端通过http协议post方式上传数据到服务端,在服务器端通过request.getInputStream()能获取到相应的数据,但用request.getParameter...
  • zouqingfang
  • zouqingfang
  • 2015年03月31日 17:27
  • 15043

Java获取post请求json数据

java接收http请求body中的json数据 发表于 2015-12-26   |   分类于 java   |   暂无评论 一般情况下,web应用中,浏览器发送http...
  • k469785635
  • k469785635
  • 2017年03月01日 17:47
  • 10948

Python中urllib2的数据标准化问题

在使用urllib2获取接口数据时一直显示服务器内部错误: urllib2.HTTPError: HTTP Error 500: Internal Server Error原因:请求数据传入错误。错...
  • Joker_Fei
  • Joker_Fei
  • 2017年06月13日 14:52
  • 397

单次请求数据量太大

八月 25, 2016 11:23:48 上午 org.apache.coyote.http11.AbstractHttp11Processor process INFO: Error parsin...
  • bdy9600
  • bdy9600
  • 2016年08月25日 11:38
  • 614

Java Web测试题(三)

四、如何解决请求数据乱码问题(GET/POST),写出关键代码并说明。 可以通过设置过滤器来对每次发送的请求进行编码设置。 针对post请求可以在servlet中通过request.set...
  • qq_21842183
  • qq_21842183
  • 2016年10月04日 18:23
  • 155

网络get/post请求异步同步请求回调

教你怎么写网络异步同步请求回调最近需要用到请求网络数据,在网上一直查找,都找不到,要么是说的不明白,之后我自己动手来实现了。网络回调,分为同步和异步,多数情况都会用异步,但是也有情况用到同步的。无论同...
  • a136558
  • a136558
  • 2016年05月12日 18:55
  • 1732

$.ajax跨域请求数据的解决方案

最近一直在搞公众号前台开发,遇到了ajax跨域请求的问题,像地区的省-市-县三级联动、汽车品牌-车系-车款的三级联动查询等都需要调用外部接口(其他工程项目的接口)完成。下面就分享一下个人解决跨域请求的...
  • xiaozhi_2016
  • xiaozhi_2016
  • 2016年09月08日 15:39
  • 2852

Http使用get或post请求网络数据

使用http请求网络数据——理解纯属个人总结和查询网络资料,如有不对请回复点出,不胜感激!!!!有很多人使用hettp请求网络的时候,总是想问,get和post那个好啊?他们的区别是什么?甚至一些面试...
  • bobo8945510
  • bobo8945510
  • 2016年11月01日 18:55
  • 2348

java ajax post跨域请求传递json格式数据问题

java 后台实现ajax post跨域请求传递json格式数据获取json数据问题   参考大神:http://blog.csdn.net/chunqiuwei/article/d...
  • cx136295988
  • cx136295988
  • 2015年07月20日 13:35
  • 3123

ajax跨域post请求,如何实现呢

我们都知道,ajax不能做跨域请求,我们首先想到的是jsonp,但是问题来了,它只是支持get请求,如果要传输数据量比较大,get请求就不能满足我们的需求了,我们需要使用ajax的post跨域请求,如...
  • jaryle
  • jaryle
  • 2017年06月23日 21:39
  • 402
    个人资料
    等级:
    访问量: 7万+
    积分: 1039
    排名: 4万+
    最新评论