我想从 servlet 向 jsp 页面发送一个包含大量值的 double 组,问题是这个数组没有一定的大小,大小是由用户输入的,所以有时它可能包含 500.000、720.000等,用户可以输入的数组大小的最大值为 1,000,000。
我正在使用以下内容,并且它工作正常:
(服务器) 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
你能帮我吗,我需要解决这个问题才能继续。
提前致谢;
最佳答案
您不应该将大量数据从 servlet 推送到 jsp。一个页面不应填充 100.000 或任何大量的值。从观看者的角度来看,这是不可用的:
- 用户永远不会想读取那么多数据
- 用户永远不会手动输入这么多数字
如果您需要向用户接收或发送该大小的数组,则需要采用不同的方法:将该数据存储在文件中(例如 csv),然后发送它。同样,对于输入,用户希望将数据作为文件发送,因此请制作临时表单来上传文件。
如果您需要预处理该数组以仅显示几个值,请在 servlet 中进行预处理,而不是在 jsp 中。
关于java - 将大量 double 值从 Servlet 发送到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982185/