将项目集合从jsp发送到Java EE应用程序中的servlet的最佳方法是什么?

时间:2012-04-14 17:40:27

标签: java java-ee request

我的目标是确保用户可以输入项目列表(比如书籍),向servlet提交插入的值,而不是将数据插入数据库。

假设演示文稿包含一个可编辑的表格,其中包含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"),因为任何行都有一个名为“code”的输入,同样适用于其他列。最后,我将有三个数组,一个包含所有代码,一个包含所有标题,最后一个包含所有作者。 但是......当我在网上阅读时,并不能保证数组中值的顺序,即title []的第一个值与第一个表行的标题值不匹配 所以我会有一本错误标题的书。这是真的吗?如果是这样,我该如何处理这种情况?

第二:如何管理大量数据?

假设该列为100,并且有一个填充数千行的脚本。 我该如何处理这种情况?有人告诉我将数据保存在服务器上的临时文件中,而不是读取文件并将数据保存在数据中。这是正确的做法吗?

2 个答案:

答案 0 :(得分:0)

我认为简短的回答是:XML

如果我正在创建并提交批处理,则可以使用XML POST。

在将用户提交到数据库之前,用户想要实际输入多少行和列?也许您可以使用Ajax调用一次提交一个?

答案 1 :(得分:0)

如果顺序很重要,我建议在jsp中生成表单而不依赖于un-guarantee数组顺序时,在输入名称后附加一个行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>

在您的servlet中读取数据时,您可以这样做:

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将其作为单独的文件存储,这当然会减慢速度。