技术开发 频道

通用分页实现及其OO设计探讨



    【IT168 专稿】分页是一种常用的页面数据显示技术,分页能够通过减少页面数据处理量从而提高了系统的性能。分页应该是做WEB开发必须掌握的一个小技术。而分页却是复杂的,倒不是它的技术有多复杂;而是有太多的重复代码,这些代码都难以重用。能不能实现一个通用的分页框架?每次只需要去覆写一两个方法,通过少量的代码就能实现分页的功能?

    一、一般分页应该要具有的功能有
    1. 灵活的设置分页大小。可以动态的设置分页大小,而不是写死到代码中。
    2. 自动计算总页数。根据分页大小和总记录数自动计算总页数。
    3. 获得当前页的页号。
    4. 获得当前页的总记录数。一般是最后一页的时候可能会小于分页大小。
    5. 判断当前页是否为第一页。
    6. 判断当前页是否为最后一页。
    7. 判断当前页是否有上一页。
    8. 判断当前页是否有下一页。
    9. 获得当前页的数据列表。
    10. 获得当前页的第一条记录的索引号
    11. 获得当前页的最后一条记录的索引号。

    二、常用的分页技术
    目前常用的分页技术有两种:
    1. 第一次访问是读取所有记录,放入session中,然后每次从session对象中读取当前页的数据
    2. 每次都访问数据库,从数据库中读取当前页的记录。
    这两种方法都各有优缺点,当数据量比较少时,第一种方法无疑是要快一些,因为减少与数据库的连接访问。而当数据量比较大时,比如查询结果可能会是上万条,那么内存的开销是十分大的,放到session中还有一个问题是能不能及时的清除无用的对象。而且这么大数据量在网络中传输也会使系统变得很慢。

    第二种方法就是专门解决这个问题的,它每次访问数据库,只读取当前页所需的记录,大大的减少网络传输量;它不会把页数据放到session中,大大提高服务器的性能。

    所以第二种方式要优于第一种方法。Session不要乱用,要用也仅仅是存放一些公共变量,相对于占用空间比较少的对象。不适合存放大量的数据,否则在很多个用户同时访问时那么系统会很慢,因为服务器内存被销耗的很厉害。
0
相关文章