分页功能的实现

不多说,先放出主角:实现分页功能的sql语句(news管理系统的分页语句~~):                  

select  
newsno, news_title, news_context,news_author,news_pubdate,  news_type,readcount, news_images
from 
(select rownum as r,t.*from 
    (select news_info.*from news_info  )t 
  where rownum<=?*3) 
where r >(?-1)*3

这个sql语句就能实现每页显示3条信息的分页功能。

理解一下:

select news_info.*from news_info

查询到的是表中所有的信息。

                  

  select rownum as r,t.*from (select news_info.*from news_info  )t where rownum<=?*3

控制每页查询到的信息数量

                    外面的r >(?-1)*3则实现“分”的功能,表示从哪一页开始。3表示每一页的新闻数量,?表示当前页码

                    个人理解是,里面的where控制每页的显示数量,外面的where控制从哪开始。

先看一张图片,方便理解:

这是用户所能看到和操作的功能。要实现分页,需要知道两个变量即可,当前页pageNo和总页pageNums。为什么呢?

因为 首页即pageNo = 1;上一页即pageNo-1;下一页即pageNo+1;末页即pageNo=pageNums。

所以,接下来我们就要考虑怎么知道pageNo和pageNums,即可。

举个实例,要求实现新闻列表的分页显示功能。

分页的总页数不就是新闻的数量除以每页显示的新闻数量吗?新闻的数量即获取数据库表中行数,每页显示新闻的数量是固定的值,下面暂且赋值为3。注意:取余不为零就需要再给一页来显示新闻,即pageNums+1。

下面是获取数据库表中数据行数的sql语句:

select count(*) from news_info;

再用getInt(1)从结果集中取出来。这里的1理解为查询结果的列号为1。

pageNo我们都知道本身这个值从页面上是获取不到的,但是是从第一页开始的,所以我们可以判断是否为null,为null的话说明了,这一页就是第一页,赋值为1。然后,不为null,就从页面获取值,后一页即pageNo=${pageNo+1}   上一页即pageNo=${pageNo-1}。

基本方法上面都提及了。

下面送上我的项目实例:

jsp(c:when来控制视图显示):

<c:forEach items="${pageList}" var="pageList">
        <li>
        <a href='#'>${pageList.newsTitle}</a><span>
        ${pageList.newsDate}</span>
        </li>
        <li class='space'></li>
  		</c:forEach>
  		<p align="right">
  		<c:choose>
 		<c:when test="${pageNo>1}">        
        <a href="index.do">首页</a> 
        <a href="index.do?pageNo=${pageNo-1}">上一页</a> 
        </c:when>
        </c:choose>
                         当前页数:[${pageNo}/${pageNums}] 
        <c:choose>
  		<c:when test="${pageNo!=pageNums}">
        <a href="index.do?pageNo=${pageNo+1}">下一页</a> 
        <a href="index.do?pageNo=${pageNums}">末页</a>
        </c:when>  
        </c:choose>
        </p> 


servlet:

int pageNums = 0;
		int newNums = infoBiz.getNewsNums();
		//总页数的算法,规定每页显示3条新闻
		if (newNums%3==0) {
			pageNums = newNums/3;
		} else {
			pageNums = newNums/3+1;
		}
		session.setAttribute("pageNums", pageNums);
		
		String pageNo = null; 
        pageNo = request.getParameter("pageNo");

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值