【问题标题】:How to retrieve resultset on JAVA JSP page?如何在 JAVA JSP 页面上检索结果集?
【发布时间】:2021-02-22 02:53:11
【问题描述】:

我想显示从控制器传递到 JSP 页面的结果集,我正在使用 Spring 框架。 任何人都知道如何在我的 JSP 页面上显示数据。我不知道如何在表格上显示数据。

型号/领域:

package com.mycompany.domain;

public class Accounts {

private int accNumber;
private String accName;
private int accBalance;

public Accounts(int accNumber, String accName, int accBalance) {

    this.accNumber = accNumber;
    this.accName = accName;
    this.accBalance = accBalance;
}

public int getAccNumber() {
    return accNumber;
}

public String getAccName() {
    return accName;
}

public int getAccBalance() {
    return accBalance;
}

public void setAccNumber(int accNumber) {
    this.accNumber = accNumber;
}

public void setAccName(String accName) {
    this.accName = accName;
}

public void setAccBalance(int accBalance) {
    this.accBalance = accBalance;
}

}

控制器: 我从控制器调用 Account Implement:

@Autowired
AccountInterface ai;

@RequestMapping(value = "/listallaccounts")
public String list(@ModelAttribute("account") AccountCommand ac, Model m) {
    ResultSet rs= ai.listAccount();
    
    if (rs != null) {
        m.addAttribute("title", "List");
        m.addAttribute("AccountList",rs);
        return ("listAccount");
    } else {
        m.addAttribute("title", "List");
        m.addAttribute("message", "No Account exist.");
        return "";
    }

}

道: 从 DAO 我将数据从数据库检索到结果集。

AccountImplement()

public ResultSet listAccount() {
    String sql = "SELECT * FROM `bankdb`.`accounts`";
    ResultSet rs = db.select(sql);
    return rs;
}

我的 JSP: 在此页面中,我想显示显示帐户表。

<table class="table table-bordered">
      <thead>
         <tr>
             <th>Account Number</th>
             <th>Account Name</th>
             <th>Account balance</th>
         </tr>
      </thead>
      <tbody>
      <%
          request.getAttribute("AccountList");
      %>
         <c:forEach items="${AccountList}" var="item">
         <tr>
             <td>${item.AccountNumber}</td>
             <td>${item.AccountName}</td>
             <td>${item.AccountBalance}</td>
         </tr>
         </c:forEach>
   </tbody>

【问题讨论】:

    标签: java spring-mvc jsp


    【解决方案1】:

    你可以直接在jsp中做这个

       <%  
        AccountDAO ad;//intreface
        ad = new AccountDAOImplementation();//repository
        ResultSet rs = ad.ListAllAccount();
        
        while (rs.next()) {
    %>
    <tr>
        <td><% out.print(rs.getString("accountNumber")); %></td>
        <td><% out.print(rs.getString("accountName")); %></td>
        <td><% out.print(rs.getString("Balance")); %></td>
    </tr>
    <%
        }
    
    %>
    

    【讨论】:

    • 在 JSP 页面中执行 Java 业务逻辑是一种非常糟糕的做法...过于紧密的耦合。
    【解决方案2】:

    我认为您应该包含一个脚本,然后使用从控制器请求数据

     <script>
        $.ajax({
        url: "yourhost/listallaccounts",
        type: 'GET',
        data: {data});
        </script>
    

    然后你可以在表格中格式化

    【讨论】:

      【解决方案3】:

      这里有几点需要注意。

      1. request.getAttribute("AccountList");这是不必要的,因为数据在模式属性中但不在请求中。所以你可以删除它。

      2. 您将 ResultSet 设置为数据值,但尝试像列表或集合一样进行迭代,这是不正确的。

      3. 不建议将 ResultSet 放在 modal 属性中,通过在控制器级别迭代将 ResultSet 更改为 List 集合,然后将列表设置为 modal 属性。

      ResultSet to List --> https://stackoverflow.com/a/13010010/6572971

      这会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多