如何将记录的arrayList从数据库传递到JSP中的表

时间:2016-01-13 11:12:46

标签: java jsp servlets

我在MYSQL的表格中有一些记录。

    public List<EmployeeTable> getEmployee() {
    ArrayList<EmployeeTable> empList = new ArrayList<EmployeeTable>();
    Connection con = (Connection) DbManager.getConnection();
    try {
        PreparedStatement   pstmnt  = (PreparedStatement) con.prepareStatement("select * from employeetable");
        ResultSet           rs      = pstmnt.executeQuery();
        while(rs.next()) {
            empList.add(new EmployeeTable(rs.getString("firstName"), 
                                          rs.getString("lastName"), 
                                          rs.getString("displayName"), 
                                          rs.getString("dob"), 
                                          rs.getString("email"), 
                                          rs.getString("password"), 
                                          rs.getString("contact")));
        }
        return empList;
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }

}

我想将检索到的arrayList放入JSP中的表中。 我试图喜欢这个并且无法理解如何继续。

   <h2 align="center"><font><strong>Retrieve data from database in jsp</strong></font></h2>
<table align="center" cellpadding="5" cellspacing="5" border="1">
<tr>

</tr>
<tr bgcolor="#A52A2A">
<td><b>id</b></td>
<td><b>firstName</b></td>
<td><b>lastName</b></td>
<td><b>displayName</b></td>
<td><b>email</b></td>
<td><b>password</b></td>
<td><b>contact</b></td>
</tr>
<%
try{ 
connection = DriverManager.getConnection(connectionUrl+dbName, userId, password);
statement=connection.createStatement();
String sql ="SELECT * FROM record";

resultSet = statement.executeQuery(sql);
while(resultSet.next()){
%>
<tr bgcolor="#DEB887">

<td><%=resultSet.getString("id") %></td>
<td><%=resultSet.getString("firstName") %></td>
<td><%=resultSet.getString("lastName") %></td>
<td><%=resultSet.getString("displayName") %></td>
<td><%=resultSet.getString("email") %></td>
<td><%=resultSet.getString("password") %></td>
<td><%=resultSet.getString("contact") %></td>
</tr>

<% 
}

} catch (Exception e) {
e.printStackTrace();
}
%>
</table>

我明白上面的代码是错误的,但我试了一下。 谁能告诉我如何以正确的方式做到这一点。

1 个答案:

答案 0 :(得分:0)

将db代码移动到Servlet。为您提供上述评论的代码示例。

的Servlet

@Override
protected final void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

   ...
   // fetch your data as list
   List<EmployeeTable> employees = getEmployee();

   //set attribute at request scope 
   request.setAttribute("employees", employees);

   // or at session scope
   request.getSession(true).setAttribute("employees", employees);

   // do redirect/forward to your jsp..
}

// probably your getEmployee() method

以这种方式访问​​jsp中的列表..(省略导入)

...
<%
List<EmployeeTable> list = request.getAttribute("employees"); 
// iterate through your list
%>

或更好,如果你使用EL表达式并想要迭代..

<!-- request scope -->
<c:forEach var="employee" items="${employees}">

<!-- for session scope --> 
<c:forEach var="employee" items="${sessionScope.employees}">