使用Jstl显示动态数据库表

时间:2013-09-30 08:56:32

标签: java servlets dynamic-data-display

我正在尝试使用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;
    }

我的servlet:

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>

我的展示:

enter image description here

第一个名称和MiddleName都在同一列上。使用Jstl显示动态表的最佳方法是什么。一个例子也会得到赞赏。

编辑:我的预期输出是: 我添加了一个额外的One列: enter image description here

1 个答案:

答案 0 :(得分: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>