Java 将结果集从servlet传递到JSP

Java 将结果集从servlet传递到JSP,java,jsp,servlets,jdbc,resultset,Java,Jsp,Servlets,Jdbc,Resultset,我正在SampleServlet.java中执行以下操作 //Fill resultset from db .... try { ArrayList Rows = new ArrayList(); while (resultSet.next()){ ArrayList row = new ArrayList(); for (int i = 1; i <= 7 ; i++){ row.add(resultSet.getStrin

我正在SampleServlet.java中执行以下操作

//Fill resultset from db
....
try {
   ArrayList Rows = new ArrayList();

   while (resultSet.next()){
       ArrayList row = new ArrayList();
       for (int i = 1; i <= 7 ; i++){
           row.add(resultSet.getString(i));
       }
       Rows.add(row);
   }

request.setAttribute("propertyList", Rows);
RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/DisplayProperties.jsp");
requestDispatcher.forward(request,response);
//从数据库填充结果集
....
试一试{
ArrayList行=新的ArrayList();
while(resultSet.next()){
ArrayList行=新的ArrayList();

对于(int i=1;i我不明白,在给出
if
语句的情况下,行如何可以
null


无论如何,它不应该是
DisplayProperties.jsp
中的
request.getAttribute(“propertyList”)

你已经知道答案了,所以我只想做一个增强建议:不要在jsp中使用scriptlet。在适当的地方使用taglibs和EL。生成列表的示例如下:

<ul>
    <c:forEach items="${propertyList}" var="item">
        <li>${item}</li>
    </c:forEach>
</ul>
  • ${item}

您可以对HTML
表和下拉菜单
选项执行相同的操作。希望这能有所帮助。

您也不应该在JSP中使用结果集。这是一个数据库游标,一种稀缺资源。您可以让它“起作用”在一个简单的页面上,但我敢打赌,您没有明确的责任关闭代码中的ResultSet、语句或连接。您很快就会用完,并想知道为什么您的代码会出现异常崩溃

所有java.sql接口实现都不应脱离定义良好的持久层。获取连接,获取结果集,将其映射到对象或数据结构中,并按与获取相反的顺序关闭所有资源,然后将对象或数据结构返回到JSP,只使用JSTL编写,不使用scriplets,例如r显示。这是正确的做法

如果必须在JSP中使用SQL,请使用JSTL标记

request.getSession().setAttribute("propertyList", Rows);
而不是

request.setAttribute("propertyList", Rows);

在你的servlet代码中。它会工作得很好。

谢谢你Murali…非常感谢。这就像是一种享受!+1。这就是我希望在问题中找到的答案,标题是这样的!(所以我不需要写我自己的来问servlet是否是结果集的好地方:)
request.setAttribute("propertyList", Rows);