JSP分页显示

 Web开发中的分页显示可以算是最常见并且需要掌握的技术. 其本身原理比较简单, 但对于初学者可能一时难有思路. 因此做了一个example project供大家参考.

  常见的分页显示无法以下几种: 1.使用上一页/下一页的超链接实现 2.使用下拉列表菜单的动态选择实现 3.使用1至10个数字挨排显示并自动递增, 还有一些诸如输入一个数字然后跳转的方法都大同小异, 一般理解了一种方法后, 对于其他方法的实现也了然于胸, 基本上可以说是换汤不换药.

  既然要掌握一样技术(其实算不上技术, 但一时没找到更好的词, 姑且这么叫吧), 直接copy是没用的, 首先必须要理解他. 哪怕不能一下子完全吸收也没关系, 但至少也看懂个大概, 会改吧. 至于理解则会随着时间和使用次数的增加而慢慢积累. 就拿第一种方法来说, 很多新手脑子里的第一个概念就是, 好像我也会啊, 不就是一个递减, 一个递加吗? welldone, 思路完全正确. 但接下来具体怎么实现呢? 如何将表中的数据乖乖按你的需要分页, 如何动态控制递减递增量的范围, 或者在这之后考虑一下程序的健壮性都是一个程序员应该思考的问题.

  下面我简单解释一下实现分页的几个要点:

    1.取得分页后的数据集: 这点我们可以在数据库, 准确的说是SQL查询语句上下功夫. 例如, 想要将1000条数据分成20页. 每页只显示50条. 那么, 在SqlServer中我们可以这样写查询语句: SELECT TOP 50 * FROM [tablename] WHERE [id] NOT IN ( SELECT TOP (50*(?-1)) [id] FROM [tableName] ), 问号内容是要传进方法的形参, 当参数为1时(即第一页时), 只查询前50条记录, 依次类推. 而其他数据诸如mysql则可以更方便的使用limit实现, 这里不一一介绍. 值得注意的是, 如果还要对查询结果进行排序的话(一般是时间列的倒序), 则要在父查询和子查询语句后都跟上order by.

           2.得到记录总数: 这个很简单, 我们使用聚合函数count或是其他方法都能轻松得到.

           3.页面的正确性: 要考虑到页数的范围问题. 如果到了最小或最大的页数后仍然递减递加就会造成一些低级错误.

     4.用下拉列表实现时, 如何动态的根据下拉列表的选择进行翻页, 或者更人性化一点让客户知道当前是第几页等, 则可以利用到html页面表单元素的事件.

posted on 2010-05-28 11:46  Mr.S  阅读(494)  评论(0编辑  收藏  举报