1

我想将一个包含大量值的双数组从 servlet 发送到 jsp 页面,问题是这个数组没有一定的大小,大小是用户的 inpt,所以有时它可能包含 500.000、720.000 等和用户可以将其作为数组大小的值输入的最大值为 1,000,000。

我正在使用以下内容,并且可以正常工作:

(servlt) 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

你能帮帮我吗,我需要解决这个问题才能继续。

提前致谢;

4

2 回答 2

2

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

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

如果您需要向用户接收或发送该大小的数组,则需要采用不同的方法:将该数据存储在文件中(想到 csv),然后发送。同样,对于输入,用户会希望将数据作为文件发送,因此制作临时表单来上传文件。

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

于 2013-04-12T23:11:08.030 回答
0

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

用户将要求程序生成随机值,因此用户只需输入(我的程序希望随机生成多少值).. 结果将是图形表示 -</p>

于 2013-04-12T23:29:54.410 回答