我在jsp页面中有html表,动态加载数据库中的数据,然后我想通过servlet将表中的所有数据保存到数据库中。现在我的问题是,我有一个jsp页面,其中显示来自servlet的数据表,其中包含复选框,我必须将选中的内容发送到servlet,以便更新到数据库,如何做到这一点。
提前谢谢,这是我的桌子
<form action="showKwh" method="POST">
<input type="submit" value="show"/>
<table id="adminTable" class="detailsTable">
<tr class="header">
<th colspan="4">Kilowat Entry</th>
</tr>
<tr class="tableHeading">
<td></td>
<td>customer id</td>
<td>name</td>
<td>group</td>
<td>kwh</td>
<td>kwd</td>
</tr>
<c:forEach var="cust" items="${customerKwh}" varStatus="iter">
<tr id="${cust.id}" class="${((iter.index % 2) == 1) ? 'lightBlue' : 'white'} tableRow">
<td><input type="checkbox" name="check1" class="checker" value="ON" /></td>
<td id="id?${customer.id}">${cust.id}</td>
<td >${cust.name}</td>
<td >${cust.type}</td>
<td >${cust.kwh}</td>
<td><input type="text" name="txt" size="8" id="kwd${cust.id}" value="${param.value}" class="name1" /></td>
</tr>
</c:forEach>
</table>
</form>
由于您的输入字段(复选框)在for循环中,因此所有复选框都将具有相同的名称属性。因此,您可以使用HttpServletRequest
中提供的以下方法获取具有相同名称的输入字段的值。
String[] getParameterValues(String name)
在您的情况下,可以使用以下语句获取所有值-
request.getParameterValues("check1");
您可以将提交时需要发布的所有数据放回表单字段中,然后浏览器将其发送,或者使用一些类似javascript的jQuery来操作html表的DOM,在客户端提取数据,并通过ajax请求以JSON或XML的形式发送给服务器端进行解析。
不过,这是一个非常奇怪的要求。由于表中的数据来自处理响应的同一台服务器,因此使用一组行标识符进行响应就足够了,服务器将通过这些标识符识别完整的行数据。
您可以通过复选框的值传递这些标识符:
使用jQuery提取表单数据。首先,添加到您的<代码>
<td class="customerName">${cust.name}</td>
<td class="customerType">${cust.type}</td>
...and so on.
使用元素
<html>
<head>
</head>
<body>
<form action="showKwh" method="POST">
<input type="submit" value="show"/>
<table id="adminTable" class="detailsTable">
<tr class="header">
<th colspan="4">Kilowat Entry</th>
</tr>
<tr class="tableHeading">
<td></td>
<td>customer id</td>
<td>name</td>
<td>group</td>
<td>kwh</td>
<td>kwd</td>
</tr>
<tr id="123" class="lightBlue tableRow">
<td><input type="checkbox" name="check1" class="checker" value="123"/></td>
<td id="id?123" class="customerId">123</td>
<td class="customerName">Ivan</td>
<td class="customerType">Person</td>
<td class="customerKWH">54321</td>
<td><input type="text" name="txt" size="8" id="kwd123" value="98765" class="name1"/></td>
</tr>
</table>
</form>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function () { //launch this code after the whole DOM is loaded
$("form").submit(function (event) { // function to process submitted table
var tableData = []; // we will store rows' data into this array
$("#adminTable") // select table by id
.find(".tableRow") // select rows by class
.has(":checked") // select only rows with checked checkboxes
.each(function () { // for each selected row extract data
var tableRow = {};
var jRow = $(this);
tableRow.customerId = jRow.find('td.customerId').text();
tableRow.customerType = jRow.find('td.customerType').text();
tableRow.customerKWH = jRow.find('td.customerKWH').text();
tableRow.costomerKWD = jRow.find('input.name1').val();
tableData.push(tableRow);
});
$.post(
"http://google.com", /*url of consuming servlet*/
{tableData: tableData}, /*data*/
function () {
alert("Success!");
}, /*function to execute in case of success*/
"json" /* data type */
);
event.preventDefault(); //Prevent sending form by browser
}
);
});
</script>
</body>
</html>
要在浏览器中处理表单提交的表值,可以考虑以下方法。
HttpServletRequest继承自ServletRequest方法getParameterMap(),该方法返回Map。(http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html#getParameterMap () ). 您可以使用一些参数名称约定来解析它。例如:
Map<String, String[]> tableData = getParameterMap();
String[] idsToUpdate = tableData.get("selectedIds");
for (String id : idsToUpdate){
String kwdParamName = "kwd"+id;
String kwd = tableData.get(kwdParamName)[0];
}
不管怎样,你都应该以某种方式解析请求数据。两者(基于JSON和基于表单)都有各自的优点和缺点。你应该选择哪一个产生更干净、更健壮的解决方案。也许,在美学上更让你高兴。最后但同样重要的是,你的客户端上下文是什么:它是否启用了javascript,是单页应用程序还是往返。在单页中,通过JSON来回传递数据是更常见的方式。在往返中——也许基于表单会更实用。
我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?
问题内容: 当我尝试将Servlet中的列表值设置为会话变量并像JSP一样访问它时, 做得到 JSP 我在JSP中遇到错误,因为“列表无法解析为类型” 那我该怎么做呢?我想将列表从Servlet传递到JSP并填充一个下拉列表。 问题答案: 您要导入列表和演员表吗?
如何将列表从jsp传递到servlet?我想在JSP中添加dianomic字段,并通过servlet插入它。
我创建了一个web应用程序,它使用登录页面、servlet、托管bean和jsp页面。无论我做了什么尝试,我都无法让JSP页面显示servlet中的项名数组,这些项名是使用bean对象的arraylist获取的。我甚至尝试在servlet中创建一个bean对象,然后传递一个字符串变量。我试过同时使用会话和请求,但无法使其工作,下面是我的代码: servlet: JSP: ItemInventory
我正在尝试将包含object的ArrayList从servlet传递到JSP。但是 Servlet文件: JSP文件:
我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些