【问题标题】:Get the most recent data from database to jsp page从数据库获取最新数据到jsp页面
【发布时间】:2017-01-06 23:48:51
【问题描述】:

我正在尝试使用 servlet 和 jsp 从 mysql 数据库中获取过去 5 天的数据。我创建了一个数据库类,它在其中查找最近 5 天到当前日期之间的日期。然后在我的 serlvet 上,我调用了该方法并将值存储在列表中并将其转发到 jsp 页面。我在jsp页面中创建了一个表来显示数据库数据,但是什么都没有显示。我调试了它,它显示列表是空的。我不确定我做错了什么。这是我的代码:

数据库方法:

public static List getMaxRecordsHomePage(int id) {
    List recordList = new ArrayList<>();

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    Date date = new Date();
    String currentDate = dateFormat.format(date);

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -5);
    Date previousDate = cal.getTime();
    String fromDate = dateFormat.format(previousDate);

    try {
        Connection conn = DBConnection.getConnection();
        String query = "SELECT * FROM record WHERE userId=? AND date BETWEEN ? AND ?";
        PreparedStatement stmt = conn.prepareStatement(query);
        stmt.setInt(1, id);
        stmt.setString(2, fromDate);
        stmt.setString(3, currentDate);
        ResultSet rs = stmt.executeQuery();

        while(rs.next()) {
            Record records = new Record();
            records.setId(id);
            records.setCategory(rs.getString("category"));
            records.setDescription(rs.getString("description"));
            records.setAmount(rs.getString("amount"));
            records.setDate(rs.getString("date"));
            recordList.add(records);
        }   
    } catch (Exception e) {
        System.out.println(e);
    }
    return recordList;
    }
}

服务:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
{
    int id = SessionService.getSessionId(request, response);                    
    List recordList = FinanceService.getMaxRecordsHomePage(id);
    request.setAttribute("recordList", recordList);

    RouteService.routeDispatcher(request, response, "homepage.jsp");
}

JSP 页面:

<table>
    <caption>Recent Records</caption>
    <tr>
        <td>Category</td>
        <td>Short Description</td>
        <td>Amount</td>
        <td>Date</td>
    </tr>
    <c:forEach var="Records" items="${recordList}">
        <tr>
            <td><c:out value="${Records.category}"/></td>
            <td><c:out value="${Records.description}"/></td>
            <td>$<c:out value="${Records.amount}"/></td>
            <td><c:out value="${Records.date}"/></td>
        </tr>
    </c:forEach>
</table>

【问题讨论】:

  • 您是否检查了您的服务器日志。通常它会告诉您更多信息。我怀疑你在某处有一个空值。
  • @otc 是的,我检查了我的服务器日志,但没有错误消息
  • 在这种情况下,很可能没有从查询返回的数据。你有oracle或mysql数据库。我通常在我的陈述上做一个 setDate 而不是设置字符串。
  • 您要检查的另一件事是在退出 while 循环后立即添加一个记录器语句或打印行与您的集合大小。
  • nASIM Ahmed bhai,在没有任何日期的情况下运行该 sql 查询。首先运行 SELECT * FROM record 看看你是否得到任何回报。然后从那里继续

标签: java mysql jsp servlets


【解决方案1】:

BETWEEN 运算符选择范围内的值。这些值可以是数字、文本或日期。

如果要获取某个范围内的日期,可以在数据库中选择列类型为“数据”、“日期时间”等。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多