java - 将 ResultSet 从 servlet 传递到 JSP

标签 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.getString(i));
       }
       Rows.add(row);
   }

request.setAttribute("propertyList", Rows);
RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/DisplayProperties.jsp");
requestDispatcher.forward(request,response);

然后在我的 jsp DisplayPropeties.jsp 中有

<% 
     ArrayList rows = new ArrayList();

     if (request.getSession().getAttribute("propertyList") != null) {
         rows = (ArrayList ) request.getSession().getAttribute("propertyList");
     }
%>

但是 rows 始终为 null。

我做错了什么?

最佳答案

您也不应该在 JSP 中使用 ResultSet。那是一个数据库游标,一种稀缺资源。您可能会在一个简单的页面上让它“工作”,但我敢打赌您对关闭代码中的 ResultSet、Statement 或 Connection 没有明确的责任。您很快就会精疲力尽,想知道为什么您的代码会因异常而崩溃。

任何 java.sql 接口(interface)实现都不应逃出定义明确的持久层。获取连接,获取 ResultSet,将其映射为对象或数据结构,并以获取的相反顺序关闭所有资源,然后将对象或数据结构返回给仅使用 JSTL 编写且没有 scriplet 的 JSP 以供显示。这是正确的做法。

如果您必须在 JSP 中使用 SQL,请使用 JSTL 标记来执行此操作。

关于java - 将 ResultSet 从 servlet 传递到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726041/

相关文章:

java - session 超时 Spring

javascript - 另一个 JSP(也使用 jQuery)内的 JSP(使用 jQuery)出现问题

java - 如何在jsp页面中获取mysql查询结果?

java - Spring Web 服务 - 如何提取请求?

eclipse - Tomcat 报告 IncompatibleClassChangeError - 类路径问题?

java - 未应用 KeyCloak 授权权限

java - WebFilter urlPattern 不工作

java - 从 HttpServletRequest 获取用户名和密码

java - 显示浏览器请求中未找到的页面

jsp - 在jsp:param中传递Java变量