Java 如何从JSP文件迭代ResultSet?
我在servlet文件中有一个简单的语句,它将遍历数据库并获得结果集Java 如何从JSP文件迭代ResultSet?,java,sql,jsp,servlets,resultset,Java,Sql,Jsp,Servlets,Resultset,我在servlet文件中有一个简单的语句,它将遍历数据库并获得结果集 ResultSet AssignmentList = stmt.executeQuery("SELECT * FROM Assignments WHERE " + projectID + "= Pid;"); request.setAttribute("assignmentList", AssignmentList); 如您所见,我正在将ResultSet发送到一个JSP文件。在这个JSP文件中,我试着像这样遍历它 <
ResultSet AssignmentList = stmt.executeQuery("SELECT * FROM Assignments WHERE " + projectID + "= Pid;");
request.setAttribute("assignmentList", AssignmentList);
如您所见,我正在将ResultSet
发送到一个JSP文件。在这个JSP文件中,我试着像这样遍历它
<table class="CSSTableGenerator">
<thead>
<tr>
<th>Aid</th>
<th>Title</th>
<th>Task</th>
<th>ID of User Responsible</th>
</tr>
</thead>
<tbody>
<c:forEach items="${assignmentList}" var="item">
<tr>
<td>${item.Aid}</td>
<td>${item.Title}</td>
<td>${item.Task}</td>
<td> ${item.UserID}</td>
</tr>
</c:forEach>
</tbody>
</table>
帮助
标题
任务
负责用户的ID
${item.Aid}
${item.Title}
${item.Task}
${item.UserID}
但是当我这样做的时候,我得到了一个错误。
我是想以错误的方式进行迭代,还是不可能通过
结果集进行迭代
在我们读取结果集之后,我们需要关闭数据库连接。因为您在JSP中读取结果集,所以只能在JSP中关闭连接。在我看来,这不是一个好的做法
在servlet中查询数据库后,读取结果集,将结果存储在列表中,然后关闭数据库连接。然后,在请求属性中将此列表传递给JSP。JSP使用EL从请求属性检索列表。您可以使用JSTL来迭代此列表。读取结果集后,我们需要关闭数据库连接。因为您在JSP中读取结果集,所以只能在JSP中关闭连接。在我看来,这不是一个好的做法
在servlet中查询数据库后,读取结果集,将结果存储在列表中,然后关闭数据库连接。然后,在请求属性中将此列表传递给JSP。JSP使用EL从请求属性检索列表。您可以使用JSTL来迭代此列表。读取结果集后,我们需要关闭数据库连接。因为您在JSP中读取结果集,所以只能在JSP中关闭连接。在我看来,这不是一个好的做法
在servlet中查询数据库后,读取结果集,将结果存储在列表中,然后关闭数据库连接。然后,在请求属性中将此列表传递给JSP。JSP使用EL从请求属性检索列表。您可以使用JSTL来迭代此列表。读取结果集后,我们需要关闭数据库连接。因为您在JSP中读取结果集,所以只能在JSP中关闭连接。在我看来,这不是一个好的做法 在servlet中查询数据库后,读取结果集,将结果存储在列表中,然后关闭数据库连接。然后,在请求属性中将此列表传递给JSP。JSP使用EL从请求属性检索列表。您可以使用JSTL来迭代此列表。您可以尝试使用设计用于访问JSP页面中数据库的JSTL 我已经分享了一种方法,以及可能对您有所帮助的示例代码 逻辑:只需从Servlet中的数据库获取数据,并将数据填充到POJO类中,将所有记录的最终列表设置为请求属性,最后将请求转发到JSP页面。您可以尝试使用专为访问JSP页面中的数据库而设计的 我已经分享了一种方法,以及可能对您有所帮助的示例代码 逻辑:只需从Servlet中的数据库获取数据,并将数据填充到POJO类中,将所有记录的最终列表设置为请求属性,最后将请求转发到JSP页面。您可以尝试使用专为访问JSP页面中的数据库而设计的 我已经分享了一种方法,以及可能对您有所帮助的示例代码 逻辑:只需从Servlet中的数据库获取数据,并将数据填充到POJO类中,将所有记录的最终列表设置为请求属性,最后将请求转发到JSP页面。您可以尝试使用专为访问JSP页面中的数据库而设计的 我已经分享了一种方法,以及可能对您有所帮助的示例代码
逻辑:只需从Servlet中的数据库获取数据,并在POJO类中填充数据,将所有记录的最终列表设置为请求属性,最后将请求转发到JSP页面。假设您有一个相当标准的
ItemBean
(我将所有内容都设置为字符串,除了projectId)。然后,我可能会从DAO助手方法中的
private static List<ItemBean> queryForItems(
Connection conn, int projectId) {
PreparedStatement ps = null;
ResultSet rs = null;
// The Query is using a bind parameter
final String ITEM_SQL = "SELECT * FROM Assignments WHERE Pid = ?";
// This is the Diamond Operator... if pre Java 7, use new ArrayList<ItemBean>();
List<ItemBean> al = new ArrayList<>();
try {
// Prepare the statement
ps = conn.prepareStatement(ITEM_SQL);
ps.setInt(1, projectId); // <-- bind the parameter
rs = ps.executeQuery();
while (rs.next()) { // <-- "Iterate" the ResultSet
ItemBean ib = new ItemBean();
ib.setPid(projectId);
ib.setAid(rs.getString("Aid"));
ib.setTitle(rs.getString("Title"));
ib.setTask(rs.getString("Task"));
ib.setUserId(rs.getString("UserID"));
}
} catch (SQLException se) {
System.err.println("Error with " + ITEM_SQL + " and projectId = " + projectId);
se.printStackTrace(System.err);
} finally {
// Clean up!
try {
rs.close();
} catch (SQLException ignored) {
}
try {
ps.close();
} catch (SQLException ignored) {
}
}
return al;
}
私有静态列表查询项(
连接连接,int projectd){
PreparedStatement ps=null;
结果集rs=null;
//查询正在使用绑定参数
最后一个字符串项_SQL=“从分配中选择*,其中Pid=?”;
//这是菱形运算符…如果是Java 7之前的版本,请使用新的ArrayList();
List al=新的ArrayList();
试一试{
//准备声明
ps=conn.prepareStatement(第项);
ps.setInt(1,projectId);//假设您有一个相当标准的ItemBean
(我将所有内容都设置为字符串,除了projectId)。然后,我可能会从DAO帮助器方法中的
private static List<ItemBean> queryForItems(
Connection conn, int projectId) {
PreparedStatement ps = null;
ResultSet rs = null;
// The Query is using a bind parameter
final String ITEM_SQL = "SELECT * FROM Assignments WHERE Pid = ?";
// This is the Diamond Operator... if pre Java 7, use new ArrayList<ItemBean>();
List<ItemBean> al = new ArrayList<>();
try {
// Prepare the statement
ps = conn.prepareStatement(ITEM_SQL);
ps.setInt(1, projectId); // <-- bind the parameter
rs = ps.executeQuery();
while (rs.next()) { // <-- "Iterate" the ResultSet
ItemBean ib = new ItemBean();
ib.setPid(projectId);
ib.setAid(rs.getString("Aid"));
ib.setTitle(rs.getString("Title"));
ib.setTask(rs.getString("Task"));
ib.setUserId(rs.getString("UserID"));
}
} catch (SQLException se) {
System.err.println("Error with " + ITEM_SQL + " and projectId = " + projectId);
se.printStackTrace(System.err);
} finally {
// Clean up!
try {
rs.close();
} catch (SQLException ignored) {
}
try {
ps.close();
} catch (SQLException ignored) {
}
}
return al;
}
私有静态列表查询项(
连接连接,int projectd){
PreparedStatement ps=null;
结果集rs=null;
//查询正在使用绑定参数
最后一个字符串项_SQL=“从分配中选择*,其中Pid=?”;
//这是菱形运算符…如果是Java 7之前的版本,请使用新的ArrayList();
List al=新的ArrayList();
试一试{
//准备声明
ps=conn.prepareStatement(第项);
ps.setInt(1,projectId);//假设您有一个相当标准的ItemBean
(我将所有内容都设置为字符串,除了projectId)。然后,我可能会从DAO帮助器方法中的
private static List<ItemBean> queryForItems(
Connection conn, int projectId) {
PreparedStatement ps = null;
ResultSet rs = null;
// The Query is using a bind parameter
final String ITEM_SQL = "SELECT * FROM Assignments WHERE Pid = ?";
// This is the Diamond Operator... if pre Java 7, use new ArrayList<ItemBean>();
List<ItemBean> al = new ArrayList<>();
try {
// Prepare the statement
ps = conn.prepareStatement(ITEM_SQL);
ps.setInt(1, projectId); // <-- bind the parameter
rs = ps.executeQuery();
while (rs.next()) { // <-- "Iterate" the ResultSet
ItemBean ib = new ItemBean();
ib.setPid(projectId);
ib.setAid(rs.getString("Aid"));
ib.setTitle(rs.getString("Title"));
ib.setTask(rs.getString("Task"));
ib.setUserId(rs.getString("UserID"));
}
} catch (SQLException se) {
System.err.println("Error with " + ITEM_SQL + " and projectId = " + projectId);
se.printStackTrace(System.err);
} finally {
// Clean up!
try {
rs.close();
} catch (SQLException ignored) {
}
try {
ps.close();
} catch (SQLException ignored) {
}
}
return al;
}
私有静态列表查询项(
连接连接,int projectd){
PreparedStatement ps=null;
结果集rs=null;
//查询正在使用绑定参数
最后一个字符串项\u SQL=“从分配中选择*,其中Pid