2012-04-14 6 views
0

私の目標は、ユーザーが項目のリストを入力して(書籍と言う)、データベースにデータを挿入するよりも挿入された値をサーブレットに送信できるようにすることです。Java EEアプリケーションのjspからサーブレットへのアイテムのコレクションを送信する最適な方法は何ですか?

プレゼンテーションは、10個の空の行といくつかの新しい行を追加できるイベントを含む編集可能なテーブルで構成されているとします。このテーブルは、例えば、「コード」、「タイトル」、および「著者」という3つの列を有する。

私の最初の疑問は、どうすればリクエストから書籍のコレクションを入手できますか?

<tr> 
    <td><input type="text" name="code" /></td> 
    <td><input type="text" name="title" /></td> 
    <td><input type="text" name="author" /></td> 
</tr> 

に従うような任意のテーブルの行がある場合、任意の行は名前「コード」と入力したと同じことが他の列にも適用されるので、私はrequest.getParameterValues("code")を使用することができます。最後に私は3つの配列を持っています。一つはすべてのコードで、もう一つはすべてのタイトルと最後のものをすべての著者と一緒にします。 しかし、私はウェブ上で読むと配列の値の順序が保証されていません。これはtitle []の最初の値が最初のテーブル行のタイトル値と一致しないためです 間違ったタイトルの本。本当ですか?もしそうなら、どうすればこの状況を管理できますか?

2番目:巨大なデータをどのように管理できますか?

列が100であり、何千もの行を塗りつぶすスクリプトがあるとします。 この状況をどのように管理する必要がありますか?誰かが、ファイルを読み込んでデータを保存するよりも、サーバー上の一時ファイルにデータを保存するように指示しました。それは正しいアプローチですか?

+0

"*配列の値の順序は保証されていません*" - 何らかのソースを提供できますか? –

+0

[からstackoverflow](http://stackoverflow.com/questions/2317281/ordering-of-values-in-httpservletrequest-getparametervalues) –

+0

ありがとう、それを認識していませんでした。しかし、実際には*注文が保存されているようです。 –

答えて

0

注文が重要な場合は、保証のない配列の注文に頼るのではなく、jspでフォームを生成するときに、入力IDに行IDを追加することをお勧めします。

データを読み込む際に、あなたがこれを行うことができ、あなたのサーブレットで
<tr> 
    <td><input type="text" name="code-1" /></td> 
    <td><input type="text" name="title-1" /></td> 
    <td><input type="text" name="author-1" /></td> 
</tr> 
<tr> 
    <td><input type="text" name="code-2" /></td> 
    <td><input type="text" name="title-2" /></td> 
    <td><input type="text" name="author-2" /></td> 
</tr> 

:2番目の質問については

int row = 1; 
while(true) { 
    String code = request.getParameter("code-" + row); 
    String title = request.getParameter("title-" + row); 
    String author = request.getParameter("author-" + row); 
    row++; 
    if (code == null && title == null && author == null) { //or modify this to whatever you need 
     break;   
    } 
    //your process here 
} 

、私は別のファイルにHTML入力フォームの保存の真のメリットが表示されませんすぐに処理するのではなく、最初に処理します。実際には、別のファイルとして保存するために余分なIOを費やしています。

+0

よろしくお願いいたします。 当面はこの方法を実装します。私はすでにこれを考えていましたが、useBeanのように自動化されたものが必要だと思っていました。 しかし、アプリケーションが増えれば、XML/Ajaxを使用する必要があります。 –

0

私は短い答えはあると思う:XML

私はバッチを作成し、提出された場合は、XMLのPOSTが進むべき道だろう。

DBにコミットする前にユーザーが実際に入力する行と列の数はいくつですか?あなたはAjaxコールを使って一度に1つずつ提出することができますか?