【问题标题】:I want to display results from database 10 per page in jsp我想在 jsp 中每页显示来自数据库 10 的结果
【发布时间】:2009-07-27 15:00:29
【问题描述】:

我的网站有以下代码,我想扩展此结果以显示每页 10 个结果。如果有人可以帮助我,我将不胜感激。

java.sql.PreparedStatement p = servlet1.DB.query("select * from user where userdate like  ");
p.setString(1,userdate);
java.sql.ResultSet r = p.executeQuery();

【问题讨论】:

  • 这个问题取决于数据库 - 除非您想选择所有内容,然后只提供 10 个选择子列表,这是可行但不可取的。

标签: java jsp pagination


【解决方案1】:

阅读http://www.javaranch.com/journal/2008/08/pagination-using-JDBC-and-JSP.html。这谈到了各种分页方式。选择最适合您的情况。

【讨论】:

    【解决方案2】:

    有两种基本方法。

    最有效的是在数据库中进行分页。你需要实现这样的东西:

    public long countMyData(..query params..);
    
    public Object[] loadMyDataPage(..query params.., long startIndex, long count);
    

    使用这两种方法后,您可以根据 countMyData() 的结果数在页面上呈现页面控件。当用户选择一个新页面时,您只能使用具有正确 startIndex 和计数的 loadMyDataPage() 来获取该页面的数据。

    您还需要确保查询相对“稳定” - 一次又一次调用时,结果基本相同。最简单的方法是确保您对结果进行排序 合理的 - 例如论坛软件的主题日期或类似的东西。否则项目会“跳跃”。

    第二种方法是一次性加载所有内容并将其存储在某个缓存中,然后从那里显示。问题是它非常浪费,特别是如果它对每个访问者都是唯一的,所以如果你尝试这样做,你需要小心不要浪费所有的内存。

    【讨论】:

    • 问题是SQL中的分页关键字依赖于数据库。我建议使用像 Hibernate 这样的层来处理所有杂乱的细节。
    • 我总体上同意你的看法。然而,在这种特定情况下,OP 似乎已经有一个网站,只需要对其进行一点扩展。重构它以使用 Hibernate 只是为了添加分页将是矫枉过正
    【解决方案3】:

    看看DisplayTag。它是一个 JSP 标签库,可以获取结果集并以表格方式显示,包括分页:

    <sql:query var="results">
      select * from table
    </sql:query>
    
    <display:table name="${results.rows}" pagesize="10"/>
    

    【讨论】:

      【解决方案4】:

      看看这个链接。

      模式(你需要知道):

      Value List Handler Pattern.

      实现(你可以使用这个):

      ValueList: An implementation of Value List Handler Pattern.

      希望这会对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2013-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多