我的目标是确保用户可以输入项目列表(比如书籍),向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,并且有一个填充数千行的脚本。 我该如何处理这种情况?有人告诉我将数据保存在服务器上的临时文件中,而不是读取文件并将数据保存在数据中。这是正确的做法吗?
答案 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将其作为单独的文件存储,这当然会减慢速度。