0

我的目标是确保用户可以输入项目列表(比如说书籍),将插入的值提交给 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,并且有一个脚本填充了数千行。我应该如何处理这种情况?有人告诉我将数据保存在服务器上的临时文件中,而不是读取文件并将数据保存在数据集中。这是正确的方法吗?

4

2 回答 2

0

我认为简短的回答是:XML

如果我正在创建并提交一个批次,那么 XML POST 将是可行的方法。

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

于 2012-04-14T23:27:56.983 回答
0

如果顺序很重要,我建议您在 jsp 中生成表单时将行 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 将其存储为单独的文件,这当然会减慢速度。

于 2012-04-14T23:47:30.173 回答