1

サーブレットからjspページに多数の値を含むdouble配列を送信したいのですが、この配列の問題は特定のサイズを持たず、サイズはユーザーからの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"); %>

しかし、サーブレットから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

サーブレットから jsp に大量のデータをプッシュすることは想定されていません。ページに 100.000 などの膨大な量の値を入力しないでください。これは、視聴者の観点からは使用できません。

  • ユーザーはその量のデータを読みたくないでしょう
  • ユーザーがこれほど多くの数字を手で入力することはありません

そのサイズの配列をユーザーに送受信する必要がある場合は、別の方法で解決する必要があります。そのデータをファイルに保存し (csv が思い浮かびます)、それを送信します。同様に、入力の場合、ユーザーはデータをファイルとして送信する必要があるため、アドホック フォームを作成してファイルをアップロードします。

少数の値のみを表示するためにその配列を前処理する必要がある場合は、jsp ではなく、サーブレットで前処理を行います。

于 2013-04-12T23:11:08.030 に答える