Java 在提交给db之前,根据servlet中的一列将结果排列到多个表中

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();

我想将从db生成的数据拆分为servlet中的几个表并显示它。表格是使用演示ID组织的。例如,我有10个人。我需要使用相同的
可用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进行循环

  • 在内部循环之前,您将打印表标题

  • 打印表头后,您可能希望循环遍历student数组并打印每个student数据


  • 首先,看起来您正在一遍又一遍地重复代码。无论您获得什么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进行循环

  • 在内部循环之前,您将打印表标题

  • 打印表头后,您可能希望循环遍历student数组并打印每个student数据


  • 您的问题是什么?我想根据
    可用ID
    对结果进行分割。看看我的预期结果。但是我的代码会产生最后的结果。你的问题是什么?我想根据
    可用ID
    对结果进行分割。看看我的预期结果。但是我的代码,产生最后的结果。谢谢你的时间。我会看一遍,稍后再告诉你:)@angelooparaht谢谢你抽出时间。我会看一遍,稍后再告诉你:)@AngeloOparah