从Servlet向JSP发送大量的double值

时间:2013-04-12 23:01:48

标签: java jsp servlets service web

我想从servlet向jsp页面发送一个包含大量值的double数组,这个数组没有一定大小的问题,大小是以用户的inpt给出的,所以有时它可以包含500.000,720.000等等,用户可以输入的最大值为数组大小的值为1,000,000。

我使用以下内容,它可以正常工作:

(的servelt)          RequestDispatcher disp;

     request.setAttribute("vValues", V_Array);

     disp = getServletContext().getRequestDispatcher("/index.jsp");

     disp.forward(request, response);

(JSP)

         <% double[] V_Values =(double[]) request.getAttribute("vValues"); %>

但是当我尝试从servlet向jsp页面发送超过100.000个值时,问题出现了,页面加载了一段时间,然后崩溃并出现以下错误:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.xml.ws.WebServiceException: Could not send Message.
    org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:144)
    sun.proxy.$Proxy64.getSVData(Unknown Source)
    SMC.client.SMCService.doGet(SMCService.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/SMC/services/SMPort: Read timed out
你可以帮助我,我需要解决这个问题才能继续。

提前致谢;

2 个答案:

答案 0 :(得分:2)

您不应该将大量数据从servlet推送到jsp。页面不应该填充100.000或任何大量的值。从观众角度来看,这是不可用的:

  • 用户永远不会想要读取该数据量
  • 用户永远不会手动输入这么多数字

如果您需要接收或发送该大小的数组给用户,您将需要解决另一种方法:将该数据存储在一个文件中(csv浮现在脑海中),然后发送它。同样,对于输入,用户希望将数据作为文件发送,因此请使用临时表单上传文件。

如果需要预处理该数组只显示几个值,请在servlet中进行预处理,而不是在jsp中进行预处理。

答案 1 :(得分:0)

抱歉,也许我的解释不太好,我的意思是

用户会要求程序生成随机值,因此用户必须输入(我的程序需要多少值来随机生成)..结果将是图形重新定位 -