3

<display:table>検索結果を表示するためにを使用してjspを記述しました。に<display:table>は、javabeanリストを引数として渡す必要があります。現在、コントローラーがリストを作成し、jspがそれを表示します。

私の懸念は、1000人のユーザーが一度に検索を実行するとどうなるかということです。つまり、表示するには、すべての結果を異なるjavabeanリストとしてメモリにロードする必要があり<display:table>ます。メモリ不足が原因でシステムがクラッシュする可能性があります。システムのメモリ不足を防ぐための優れた戦略はありますか?アプリケーションレベルで、アプリケーションをロードするユーザーの数を制限する方法はありますか?<display:table>すべてのレコードを一度にメモリにロードする必要があるため、使用することは悪いプログラミング手法であることを意味しますか?前もって感謝します。

4

2 に答える 2

4

これは非常に有効な懸念事項です。不必要にメモリを割り当てないでください。残念ながら、Displaytagはデータベースレベルでのページネーションをサポートしていません。最初にすべてをJavaのメモリにロードする必要があります。最もメモリ効率の高いアプローチは、エンドユーザーが表示するデータのみをメモリに保存し、サーバーに対して新しいHTTPリクエストを送信して、ボタンをクリックするたびにDBから新しい行を正確に取得することです。

それを行うJSPベースのページネーションタグは他にありません。JSFを使用している場合は、PrimeFaces<p:dataTable dynamic="true">をお勧めします。DBから特定の行を正確に取得するコードを作成する必要があります。ただし、HibernateやJPAを使用している場合、これはそれほど難しくありません。

「プレーンバニラ」JSP/JSPLでは、もう少し作業を行う必要があります。firstrow基本的に、 DBからデータを取得するために、の値を変更してアクションを呼び出す一連のボタンを提供する必要があります。これについては、このトピックの前に詳しく説明しました:ResultSettoPagination

于 2010-07-28T12:01:09.960 に答える
1

古い投稿ですが、記録のために、Displayタグは外部ページ付けをサポートしています。

詳細はこちら:http ://displaytag.sourceforge.net/11/tut_externalSortAndPage.html

于 2013-03-05T13:14:09.847 に答える