ajax请求到参数太大获取参数失败问题

一般而言,get请求是有参数长度限制的,但是post请求没有参数长度限制。但是在实际使用过程中发现ajax请求参数在超过几万个字符之后,在获取java通过getParameter获取参数时,往往数据变成了空值(null),如果是使用spring mvc控制器的话,就会直接抛出异常。经过多次实践之后发现,在ajax post请求参数过长的时候,实际请求到的header中参数格式为“参数名=url编码参数值”,这个时候的一个参考解决方案是通过流形式,自动解析参数,参考代码如下:


@ResponseBody
@RequestMapping(value = "/createMap")
public String createpicture(
/*@RequestParam("editrow") String strEditRow,*/
HttpServletRequest request,
HttpServletResponse response) throws IOException {
String strEditRow=getRequestContentParam(request);

 
return ccp.createPicture(strEditRow,response,childTable);
}

public static String getRequestContentParam(HttpServletRequest request) throws IOException{
String strEditRow="";
request.setCharacterEncoding("utf-8");  
   StringBuilder sb = new StringBuilder();
   BufferedReader reader = request.getReader();
   char[] buff = new char[1024];
   int len;
    while((len = reader.read(buff)) != -1) {
       sb.append(buff,0, len);
       }
    String content =sb.toString();
    if(StringUtil.IsNotNullOrEmpty(content) && content.startsWith("editrow=")){
    content=content.substring(8);
    }
    String ENCODE = "UTF-8"; 
    strEditRow = java.net.URLDecoder.decode(content, ENCODE);
    
    System.out.println(strEditRow);
    return strEditRow;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值