添加学生名单jsp页面(我暂时设了有3条学生信息,要求一起插入表内):<form action="stuInfo.do" method="post" >
<input type="hidden" name="operate" value="doAdd" /><table id="testTbl" border=1>
<tr><td>学号</td><td>姓名</td><td>性别</td></tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
</table>
<input type="submit" value="提交" />
</form>action的内容是(这个action单独插入一条是可行的,就是不知道怎么改让他可以插入3条,现在只能插入第一条):public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
StuInfoForm stuInfoForm = (StuInfoForm) form;// TODO Auto-generated method stub
Student student = new Student(); student.setDepartment(stuInfoForm.getDepartment());
student.setClasses(stuInfoForm.getClasses());
student.setSno(stuInfoForm.getSno());
student.setSname(stuInfoForm.getSname());
student.setSex(stuInfoForm.getSex()); if (biz.add(student)) {
return mapping.findForward("add_success");
} else {
return mapping.findForward("add_fail");
}
}
dao里的内容是:public boolean add(Student student){
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DBGet.getConn();
String sql = "insert into student(sno,sname,sex,department,classes) values(?,?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, student.getSno());
ps.setString(2, student.getSname());
ps.setString(3, student.getSex());
ps.setString(4, student.getDepartment());
ps.setString(5, student.getClasses());
int num = ps.executeUpdate();
if (num > 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBGet.closePreparedStatement(ps);
DBGet.closeConnection(conn);
}
return false;
}就是要求可以同时向表里添加多条学生信息,而不是一条一条的添加。是应该用arrylist还是循环?在action里还是dao里?具体怎么写呢?请教大家
<input type="hidden" name="operate" value="doAdd" /><table id="testTbl" border=1>
<tr><td>学号</td><td>姓名</td><td>性别</td></tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
<tr>
<td ><input type="text" name="sno" id="sno" /></td>
<td ><input type="text" name="sname" id="sname" /></td>
<td><input type="text" name="sex" id="sex" /></td>
</tr>
</table>
<input type="submit" value="提交" />
</form>action的内容是(这个action单独插入一条是可行的,就是不知道怎么改让他可以插入3条,现在只能插入第一条):public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
StuInfoForm stuInfoForm = (StuInfoForm) form;// TODO Auto-generated method stub
Student student = new Student(); student.setDepartment(stuInfoForm.getDepartment());
student.setClasses(stuInfoForm.getClasses());
student.setSno(stuInfoForm.getSno());
student.setSname(stuInfoForm.getSname());
student.setSex(stuInfoForm.getSex()); if (biz.add(student)) {
return mapping.findForward("add_success");
} else {
return mapping.findForward("add_fail");
}
}
dao里的内容是:public boolean add(Student student){
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DBGet.getConn();
String sql = "insert into student(sno,sname,sex,department,classes) values(?,?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, student.getSno());
ps.setString(2, student.getSname());
ps.setString(3, student.getSex());
ps.setString(4, student.getDepartment());
ps.setString(5, student.getClasses());
int num = ps.executeUpdate();
if (num > 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBGet.closePreparedStatement(ps);
DBGet.closeConnection(conn);
}
return false;
}就是要求可以同时向表里添加多条学生信息,而不是一条一条的添加。是应该用arrylist还是循环?在action里还是dao里?具体怎么写呢?请教大家
action只能取到表格里第一行数据的值,后面的取不到。怎么办?
for(int i=100;i<1101;i++)...{
pst.setInt(1,i);
...
pst.addBatch();
}
pst.executeBatch();
...
这是处理插入语句时用的吧?问题是我现在action里貌似只能取到第一条数据,后面的取不到是怎么回事?
for(Student studentCondition : student)...{
pst.setString(1,studentCondition.getDepartment());
...
pst.addBatch();
}
pst.executeBatch();
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
StuInfoForm stuInfoForm = (StuInfoForm) form
ArrayList<Student> list = new ArrayList<Student>();
Student student = null;
for(int i=0;i<2;i++){
student = new Student();
student.setDepartment(stuInfoForm.getDepartment());
student.setClasses(stuInfoForm.getClasses());
student.setSno(stuInfoForm.getSno());
student.setSname(stuInfoForm.getSname());
student.setSex(stuInfoForm.getSex());
list.add(student);
}
if (biz.add(list)) {
return mapping.findForward("add_success");
} else {
return mapping.findForward("add_fail");
}
}它就连着把第一条数据插了2遍,第二条还是没进去,怎么回事?是for循环括号里写错了吗?
<td > <input type= "text " name= "sname " id= "sname " /> </td>
<td> <input type= "text " name= "sex " id= "sex " /> </td>3个student不用一样的名字和Id,就行了
<td > <input type= "text " name= "sno1 " id= "sno 1" /> </td>
<td > <input type= "text " name= "sname1 " id= "sname1 " /> </td>
<td> <input type= "text " name= "sex 1" id= "sex1 " /> </td>
Student student = new Student();
student.setDepartment(stuInfoForm.getDepartment());
student.setClasses(stuInfoForm.getClasses());
student.setSno(stuInfoForm.getSno());
student.setSname(stuInfoForm.getSname());
student.setSex(stuInfoForm.getSex());
list.add(student); Student student1 = new Student();
student.setSno(stuInfoForm.getSno1());
student.setSname(stuInfoForm.getSname1());
student.setSex(stuInfoForm.getSex1());
list.add(student1); 如果想用同样的名字的话,我认为只能拼串用js提交了。
我只是举个例子有3个学生,真正添加肯定不止3个,这样就太麻烦了啊。我是用的js自动添加行的:function addRow(obj)
{
var i=0;
i=i+1;
//添加一行
var newTr = testTbl.insertRow();
//添加四列
var newTd1 = newTr.insertCell();
var newTd2 = newTr.insertCell();
var newTd3 = newTr.insertCell();
var newTd4 = newTr.insertCell();
//设置列内容和属性
newTd1.innerHTML = '<input type="text" name="sno" id="sno" />';
newTd2.innerHTML= '<input type="text" name="sname" id="sname" />';
newTd3.innerHTML= '<input type="text" name="sex" id="sex" />';
newTd4.innerHTML= '<a href="javascript:void(0);" onclick="del();">删除</a>';
}
这样添加的name和id肯定一样啊,怎么把它改成不一样的?或者照你说的js提交又怎么用呢?
那 你 看看 student.getSno() 是不是个字符串 大概应该是 1,2,3 这样的
如果是这样的话, 在action 中 用,号把 student.getSno() 获得的字符串分成 三个就行了,80%是这样的,我没试如果不是的话 就用js提交吧
var son = document.getElementsByName("sno");
var form = document.getElementById("formId");
var path = "action.do?son=" + son ........
form.action = path;
form.submit();
acton 中得到的就是 像 1,2,3这样的字符串了