1

私はWebアプリケーションの経験がまったくないので、これに一日中苦労しています。

非常に大きなテーブル(5列、500.000行以上)を作成index.jspするリクエストをに送信するページがあります。テーブルは並べ替えられているので、最初の100行を取得して、テーブルに表示します。したがって、はリクエストオブジェクトをデータが表示されるはずの場所にリダイレクトします。ServletcsvhtmlServlettable.jsp

これに関する一般的なアプローチについてのアドバイスが必要だと思います。私の頭に浮かんだいくつかのアプローチと質問があります:

  1. ファイルの作成中にcsv、最初の100行を配列の配列に格納し、リクエストオブジェクトを介してjspページに送信します。ページで表示できますhtml table

  2. ファイルへのパスのみを送信csvし、ページの最初の100行を直接読み取りjspます。

  3. json転送形式として選択すると便利ですか?

  4. 500文字列を含むオブジェクトは、リクエストオブジェクトで転送するには多すぎますか?

  5. jspリクエストオブジェクトは、データをページに転送するための良い習慣ですか?

ご協力いただきありがとうございます

4

1 に答える 1

2

JSP ページはコンテナーによってサーブレットにコンパイルされるため、最終的にはサーブレットであり、Java コードを使用できます。JSONそのため、Javascript でデータを解釈する場合のように as transfer formatを使用する必要はありません。JSP はサーバー側で評価されます。

だから、私は次のようにします:

  • サーブレットで、データを取得します
  • リクエストを JSP に転送します (これはサーバー側で発生します。クライアント (ブラウザー) は、リダイレクトのようにこのステップを認識しません)。
  • JSP でテーブルを構築する (そして応答をレンダリングする)

サーブレット コード:

public void doGet(HttpServletRequest request, HttpServletResponse response)             
                  throws ServletException, IOException {
    List<MyObject> listData = ...; // however you get the data
    // set the attribute in the request to access it on the JSP
    request.setAttribute("listData", listData);
    RequestDispatcher rd = getServletContext()
                               .getRequestDispatcher("/path/to/page.jsp");
    rd.forward(request, response);
}

JSP (JSTL taglib を使用):

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- html, head and starting body tag ... -->
<table>
    <c:forEach var="element" items="${listData}">
        <tr>
            <td>${element.abc}</td> 
            <td>${element.def}</td> 
            <td>${element.ghi}</td>
        </tr> 
    </c:forEach>
</table>

MyObjectは、インスタンス変数を保持するオブジェクトでabcありdef、それらのgetterghiメソッドがあります。

まだ持っていない場合は、JSTL jar (ここからダウンロードできます) が WEB-INF/lib フォルダーに必要であることに注意してください。

于 2013-02-12T13:00:57.220 に答える