Java 在提交给db之前,根据servlet中的一列将结果排列到多个表中
我想将从db生成的数据拆分为servlet中的几个表并显示它。表格是使用演示ID组织的。例如,我有10个人。我需要使用相同的Java 在提交给db之前,根据servlet中的一列将结果排列到多个表中,java,servlets,Java,Servlets,我想将从db生成的数据拆分为servlet中的几个表并显示它。表格是使用演示ID组织的。例如,我有10个人。我需要使用相同的可用ID分配主管和审查员。我的系统将识别它们是否有类似的可用ID 我想在管理员单击SAVE按钮并将其插入db之前,使用servlet临时显示它 Sevlet: for (int i=0; i<studentID.length ; i++) { FreeBean free = new FreeBean();
可用ID
分配主管和审查员。我的系统将识别它们是否有类似的可用ID
我想在管理员单击SAVE按钮并将其插入db之前,使用servlet临时显示它
Sevlet:
for (int i=0; i<studentID.length ; i++) {
FreeBean free = new FreeBean();
free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);
String SVavailableID = free.getAvailableID();
String EXavailableID = free.getAvailableID();
Date FreeDate = free.getFreeDate();
System.out.println("sv: "+ supervisorID[i] + SVavailableID + " ev: "+ examinerID[i] + EXavailableID);
if (SVavailableID.equals(EXavailableID))
{
if(SVavailableID.equals("2")&& EXavailableID.equals("2")){
out.println("<br><center><table><tr>"
+ "<th>Name</th>"
+ "<th>Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner Name</th>"
+ "<th>availableID</th>"
+ "<th>Time </th>"
+ "</tr>");
out.println("<tr>");
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr><br>");
out.println("</center></table>");
}//2
if(SVavailableID.equals("7")&& EXavailableID.equals("7")){
out.println("<br><center><table><tr>"
+ "<th>Name</th>"
+ "<th>Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner</th>"
+ "<th>availableID </th>"
+ "<th>Time</th>"
+ "</tr>");
out.println("<tr>");
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr><br>");
out.println("</center></table>");
}//7
if(SVavailableID.equals("10")&& EXavailableID.equals("10")){
out.println("<br><center><table><tr>"
+ "<th> Name</th>"
+ "<th> Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner</th>"
+ "<th>availableID </th>"
+ "<th>Time </th>"
+ "</tr>");
out.println("<tr>");
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr><br>");
out.println("</center></table>");
}
if(SVavailableID.equals("16")&& EXavailableID.equals("16")){
out.println("<br><center><table><tr>"
+ "<th>Name</th>"
+ "<th>Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner</th>"
+ "<th>availableID </th>"
+ "<th>Time </th>"
+ "</tr>");
out.println("<tr>");
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr><br>");
out.println("</center></table>");
}
}
预期结果将是:
表可用ID=7
:
Name Title Supervisor Examiner availableID Time
abc Hello 1024 1001 7 null
def Hi 1024 1001 7 null
ghi Hey 1002 1004 7 null
jkl hhh 1027 1011 7 null
mno 123 1014 1034 7 null
表可用ID=10
:
Name Title Supervisor Examiner availableID Time
pqr 3333 1026 1021 10 null
stu 4444 1023 1001 10 null
vwx 5555 1002 1002 10 null
yz1 6666 1027 1031 10 null
234 7777 1034 1004 10 null
我怎样才能解决这个问题呢?首先,您似乎在一遍又一遍地重复代码。无论您获得什么ID,您都在执行相同(或类似)的任务。 我建议将可以组合在一起的条件组合在一起,并在可能的情况下编写单个代码块 所以应该是这样的
if (SVavailableID.equals(EXavailableID)){
if (SVavailableID.equals("7") || SVavailableID.equals("2") || // and so on...) {
// print students data
}
}
其次,我会直觉地说,您不想为每个学生打印表格标题。
您希望事先打印它们,然后遍历学生的数组
,打印出他们的详细信息。因此,下面的代码片段将超出您的for循环
// outside the for loop
out.println("<br><center><table><tr>"
+ "<th>Name</th>"
+ "<th>Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner</th>"
+ "<th>availableID </th>"
+ "<th>Time</th>"
+ "</tr>");
// now loop through students array and print details here...
在打印html
之前,您正在比较它们的值,但是这些语句将相同的值分配给那些ID;除非您使用getAvailableID()
方法实现了某种逻辑,否则它们不太可能返回不同的结果
编辑:我刚刚读了你对答案的评论,你在那里解释了你希望如何为每个可用ID创建单独的表
我将尝试绘制一个伪代码算法来实现这一点
// loop through each available ID
for(String ID : availableIdCollection){
// print table headers here
// loop through students array
for(Student s : studentCollection){
// print students data here
}
}
基本上有两个嵌套for循环
首先,看起来您正在一遍又一遍地重复代码。无论您获得什么ID,您都在执行相同(或类似)的任务。 我建议将可以组合在一起的条件组合在一起,并在可能的情况下编写单个代码块 所以应该是这样的
if (SVavailableID.equals(EXavailableID)){
if (SVavailableID.equals("7") || SVavailableID.equals("2") || // and so on...) {
// print students data
}
}
其次,我会直觉地说,您不想为每个学生打印表格标题。
您希望事先打印它们,然后遍历学生的数组
,打印出他们的详细信息。因此,下面的代码片段将超出您的for循环
// outside the for loop
out.println("<br><center><table><tr>"
+ "<th>Name</th>"
+ "<th>Title</th>"
+ "<th>Supervisor</th>"
+ "<th>Examiner</th>"
+ "<th>availableID </th>"
+ "<th>Time</th>"
+ "</tr>");
// now loop through students array and print details here...
在打印html
之前,您正在比较它们的值,但是这些语句将相同的值分配给那些ID;除非您使用getAvailableID()
方法实现了某种逻辑,否则它们不太可能返回不同的结果
编辑:我刚刚读了你对答案的评论,你在那里解释了你希望如何为每个可用ID创建单独的表
我将尝试绘制一个伪代码算法来实现这一点
// loop through each available ID
for(String ID : availableIdCollection){
// print table headers here
// loop through students array
for(Student s : studentCollection){
// print students data here
}
}
基本上有两个嵌套for循环
您的问题是什么?我想根据
可用ID
对结果进行分割。看看我的预期结果。但是我的代码会产生最后的结果。你的问题是什么?我想根据可用ID
对结果进行分割。看看我的预期结果。但是我的代码,产生最后的结果。谢谢你的时间。我会看一遍,稍后再告诉你:)@angelooparaht谢谢你抽出时间。我会看一遍,稍后再告诉你:)@AngeloOparah