3

我正在尝试使用 JSTL 显示数据库数据,如下所示:

我的道;

public ArrayList getStudentFirstName(){
        ArrayList v = new ArrayList();
        Connection conn;
        try{
         conn =  db.getDbConnection();
         String sql = "select STU_FIRST_NAME, STU_MIDDLE_NAME, LAST_NAME from college_students_master";
         PreparedStatement ps = conn.prepareStatement(sql);
         ResultSet rs = ps.executeQuery();
         while(rs.next()){
             String firstname = rs.getString("STU_FIRST_NAME");
             String middlename = rs.getString("STU_MIDDLE_NAME");
             String lastname = rs.getString("LAST_NAME");
             v.add(firstname);
             v.add(middlename);
             v.add(lastname);
         }
        }catch(Exception asd){
            System.out.println(asd.getMessage());
        }
        return v;
    }

我的小服务程序:

public class displayservlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      DetailsDao dd = new DetailsDao();
      request.setAttribute("firstname", dd.getStudentFirstName());
        RequestDispatcher view = request.getRequestDispatcher("DemoJSP.jsp");
        view.forward(request, response);
    }
}

我的 JSP:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    </head>
    <body>
        <b>The Demo Object Names Are:-
            <br>

            <table>
                <c:forEach items="${firstname}" var="firstname">
                    <tr>
                        <td>${firstname}</td>
                    </tr>
                </c:forEach>

            </table>
    </body>
</html>

我的显示器:

在此处输入图像描述

The first Name 和 MiddleName 都在同一列上。使用 Jstl 显示动态表格的最佳方式是什么?一个例子也将受到赞赏。

编辑:我的预期输出是:我添加了一个额外的一列: 在此处输入图像描述

4

1 回答 1

5

试试这个,

创建一个名为 Name 的新 Bean 类

public class Name
{
    private String firstName;
    private String middleName;
    private String lastName;

   // relavent getter setter
}

改变你的方法getStudentFirstName()

public ArrayList getStudentFirstName(){
        ArrayList<Name> v = new ArrayList<Name>();
        Connection conn;
        try{
         conn =  db.getDbConnection();
         String sql = "select STU_FIRST_NAME, STU_MIDDLE_NAME from college_students_master";
         PreparedStatement ps = conn.prepareStatement(sql);
         ResultSet rs = ps.executeQuery();
         Name name = null;
         while(rs.next()){
             name = new Name();
             name.setFirstName(rs.getString("STU_FIRST_NAME")); //set your firstName
             name.setMiddleName(rs.getString("STU_MIDDLE_NAME")); //set your MiddleName
             name.setLastName(rs.getString("LAST_NAME")); //set your LastName
             v.add(name); 
         }
        }catch(Exception asd){
            System.out.println(asd.getMessage());
        }
        return v;
    }

改变你的c:forEach循环

<table border="1">
  <thead>
    <td>
      <th>First Name</th>
      <th>Middle Name</th>
      <th>Last Name</th>
    </td>
  </thead>
  <tbody>
     <c:forEach items="${firstname}" var="name">
       <tr>
         <td>${name.firstName}</td>
         <td>${name.middleName}</td>
         <td>${name.lastName}</td>
       </tr>
     </c:forEach>
  </tbody>
</table>
于 2013-09-30T09:18:25.727 回答