Web分页显示内容之分页查询的三种思路(三)

其三:在服务端分页。跳到第n页才查询、显示第n页内容。要点就是根据客户端表格的“页面”计算出数据库要查询的当前页面的第一条记录的位置。优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。

重点在于两条语句:select count(*) from …:查询得到记录总条数

select * from .. limit pageNo,rowsCount:查询从第pageNo条开始的rowsCount条数据。


    int pages=0;            //待显示页面
    int count=0;            //总条数
    int totalpages=0;        //总页数
    int limit=10;            //每页显示记录条数    
    //计算记录总数的第二种办法:使用mysql的聚集函数count(*)
    ResultSet sqlRst = sqlStmt.executeQuery("select count(*)
 from user");
    if(sqlRst.next()){
    count = sqlRst.getInt(1);//结果为count(*)表,只有一列。这里
  通过列的下标索引(1)来获取值
    }    
    //由记录总数除以每页记录数得出总页数
    totalpages = (int)Math.ceil(count/(limit*1.0));
    //获取跳页时传进来的当前页面参数
    String strPage = request.getParameter("pages");
    //判断当前页面参数的合法性并处理非法页号(为空则显示第一页,
    小于0则显示第一页,大于总页数则显示最后一页)
    if (strPage == null) { 
        pages = 1;
    } else {
        try{
            pages = java.lang.Integer.parseInt(strPage);
        }catch(Exception e){
            pages = 1;
        }

        if (pages < 1){
            pages = 1;
        }

        if (pages > totalpages){
            pages = totalpages;
        }                            
    }
    //由(pages-1)*limit算出当前页面第一条记录,由limit查询limit条
  记录。则得出当前页面的记录
    sqlRst = sqlStmt.executeQuery("select * from user 
order by user_id limit "+(pages - 1)*limit + "," + limit);
    while (sqlRst.next()){//遍历显示}

跳页的实现:跳页是通过重定向来实现的,通过向当前网页传进待显示的pages,在跳转后根据pages重新算出页面显示的第一条,查limit条显示。

<form name="f1" method="POST" action="index.jsp" onSubmit=
"return checknum()">
            <table border="0" align="center" >
                <tr>
                    <td><%=pages%>页 共<%=totalpages%><a href="index.jsp?pages=1">首页</a></td>
                    <td><a href="index.jsp?pages=<%=(pages<1)?pages:(pages-1) %>"> 上一页</a></td>
                    <td><a href="index.jsp?pages=<%=(pages>=totalpages)?totalpages:(pages+1)%>"> 下一页</a></td>
                    <td><a href="index.jsp?pages=<%=totalpages%>">最后一页</a></td>
                    <td>转到第:<input type="text" name="page" size="8"><input type="submit" value="GO" name="cndok"></td>
                </tr>
            </table> 
 </form>

转自博客:http://www.cnblogs.com/ygj0930/p/6134851.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值