java - 将大量 double 值从 Servlet 发送到 JSP

标签 java jsp servlets service web

我想从 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/

相关文章:

java - 按计划运行所有派生 DAO 类的公共(public)查询

java - 构造函数和指令重新排序

jquery - 使用 JQuery 加载 jsp 页面

java - 如何在 JSP 页面中显示集合项

java - java中的字符串池

java - 继承Java super.print()不返回值

jsp - servlet jsp 的 Servlet.service() 抛出异常 java.lang.NullPointerException

java - 在没有客户端请求的情况下将 servlet 通信到 jsp

java - 我可以使用 servlet 在 Web 容器中进行这种复杂的 url 映射吗?

tomcat - Tomcat 服务器作为另一个 Tomcat 服务器的代理时的 JSESSIONID 问题