请大侠们帮忙。在原系统上,页面上有一个隐藏的表单提交了一个字符串,本来使用String tableString = req.getParameter("tableString"); 在Servlet中就能拿到,可是现在这个表单的字符串已经很大了,再使用
String tableString = req.getParameter("tableString");获取时,始终是null,请大侠帮忙解决下。

解决方案 »

  1.   

    同一个字符串,当数据量小于5000条时,完全正常;当超过5000条左右时,获取的就是null。参数名肯定没有错。
      

  2.   

     <html:form action="demo.do?method=doHello" enctype="multipart/form-data">  
    类这样加个multipart/form-data,默认是application/x-www-form-urlencoded,
      

  3.   

    关键是再系统上改的,他得提交方式我没有办法改了,要改得 要改得东西太多了。
    我写个简单的例子吧。
    下面是一个简单的JSP
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      
      <body>
       <%
        String str = "";
        StringBuffer sb = new StringBuffer();
        for(int i = 0;i<100000;i++){
        if(i%50==0){
        sb.append("\n");
        }
        sb.append("hello world!");
       
        }
        str = sb.toString();
        %>
       
    <form action="demo" method="post">
    <input type="hidden" name="parm" value="<%=str%>"/>
    <input type="text" name="name"/>
    <input type="submit" value="提交"/>
    </form>

      </body>
    </html>
    i的值为100000的时候 你可以通过一个简单的Servlet可以提取,req.getParameter("parm")可以
    但是i的值为500000的时候,你再使用req.getParameter("parm") 提取的就是null
      

  4.   


    lz你看清楚我的回答,意思就是在你的form表单提交的时候加上enctype="multipart/form-data"
    也就是<form action="demo" method="post">
    在这个里面加。哎。对你表示无语。我没让你改提交方式,再说了和提交方式没关系。
      

  5.   


    这个方法应该可行哦,我记得form要提交一个文件的时候就要加上这段话,我估计你的大字符串如果也加上这段话应该也能提交了。
      

  6.   

    我的意思是他提交的表单我已经无法修改了,因为它不止一处提交,整个系统中有100多个这样的表单提交过来,而且他传得字符串,我只能获取,一共出现2处这样数据过大而引起的null。
      

  7.   


    晕死,服务器代码必须修改,不然得到的值肯定是null。我靠,这不是在为难你自己吗?
      

  8.   

    我用request.getInputStream()这个方法倒是能拿到,但是再用URLDecoder.decode(tableString,"UTF-8") 转得时候又出现问题了
      

  9.   

    要修改啥后台代码,你的JSP小例子我这获取就是可以的,用POST提交不会出现那样的情况吧,要不然上传大文件时怎么可能会成功。。
      

  10.   

    搞定了,还是用request.getInputStream()来解决的。刚刚的问题时map的问题