数据库分页实现

1.SQL数据库语言实现分页

语法:select 列名|* from 表名 limit N,M;
N:代表开始分页的记录序号。
M:代表一页内的记录条数。
例:select * from customer limit 0,2;
表示从customer表中的第一条记录开始分页,每页有两条记录。

2.使用Page对象封装相关属性便于web层页面显示

代码实现:

package domain;

import java.util.List;

public class Page {

    private List<Customer>list;//存放一个页面内的所有记录
    private int totalpage;//总的分页页面数
    private String url;//指定控制分页页面的Servlet,便于代码重用

    private int startindex;//每页开始的记录序号
    private int pagesize=10;//一个页面的记录数量

    private int pagenum;//用户指定的页码
    private int pagerecord;//数据库中需要分页的总记录数
    /**
      指定页码显示的大小
    **/
    private int startPage;//开始页码
    private int endPage;//结束页码


    public Page(int pagenum,int pagerecord){
        this.pagenum=pagenum;
        this.pagerecord=pagerecord;

        startindex=(pagenum-1)*pagesize;
        totalpage=(int)Math.ceil(pagerecord*1.0/pagesize);

//jsp页面设置只显示十个页码,若总页码数小于十,则开始页面为1,结束页码为总页数页码
        if(totalpage<=10){
            startPage=1;
            endPage=totalpage;
        }else{
            startPage=pagenum-4;
            endPage=pagenum+5;

            if(endPage>=totalpage){
                startPage=totalpage-9;
                endPage=totalpage;
            }

            if(startPage<1){
                startPage=1;
                endPage=10;
            }
        }

    }//相关的set/get方法此处省略

}
3.Jsp页面显示分页

Page对象通过request域带到Jsp页面,通过el表达式,函数和自定义标签显示page对象内的数据。
代码实现:

当前页码:[${page.pagenum }]&nbsp;&nbsp;
            <c:if test="${page.pagenum >1}">
                <a href="${page.url}?pagenum=${page.pagenum-1}">上一页</a>
            </c:if>
            <c:forEach  var="pagenum" begin="${page.startPage }" end="${page.endPage }" >
                    [<a href="${page.url}?pagenum=${pagenum}">${pagenum}</a>]  
            </c:forEach>
            <c:if test="${page.pagenum <page.totalpage}">
                &nbsp;&nbsp;
                <a href="${page.url}?pagenum=${page.pagenum+1}">下一页</a> 
            </c:if>
            &nbsp;&nbsp;
            共[${page.pagerecord }]条记录  &nbsp;&nbsp;共[${page.totalpage }]页
            跳转到<input type="text" id="choosePage" style="width:30px;"/>页 <input type="button" value="GO"  onclick="goPage()">
            <script type="text/javascript">

                function goPage(){

                    var page=document.getElementById("choosePage").value;
                    if(page!=null &&(page>0 && page<=${page.totalpage})){
                        window.location.href="${page.url}?pagenum="+page;
                    }else{
                        alert("请输入正确页码");
                        document.getElementById("choosePage").value=null;
                    }


                }


            </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值