目录

一、探讨实现分页万能公式;

二、实操使用代码完成分页效果;


 一、探讨实现分页万能公式

1.1 为什么要实现分页?

在一个页面中,面积是有限的,但是数据可能是无限的,在有限的空间放入接近无限的数据并拥有良好的用户体验感,这就是要实现分页的原因。

1.2 如何实现分页?

说白了就是从我们之前使用的连接JBDC绑定数据上面入手;

思路:

①利用SQL里面的伪列:rownum---为数据库表进行编号;

②要注意的是伪列中不能作用于大于符号以及between..and;

解决方案:把伪列--->明列(实列)=取别名;

④根据编号使用between..and将一定数量的数据平均分配到每一页;

具体SQL语句参照:

--先排序 后编号
select * from(select a.*,rownum as rid from(select * from tb_news order by nid desc) a
) b where b.rid between 1 and 3

1.3 探讨出一个分页万能公式?

我们写代码有些数据当然不能定死,总不可能一直都是前三条数据,

所以这个时候就需要一个“绿色环保”、可以循环利用的万能公式了!

我们需要的两个数据:第几页&一页多少数据,暂时把它们定位X&Y

来找规律:假设Y=5条数据

当X=1:1-5
当X=2:6-10
当X=3:11-15

得出公式:(X-1)*Y+1------X*Y


二、实操使用代码完成分页效果

2.1 开始实践?

第一步我们先来把Dao方法代码来写好;

    /*** 分页第一版* @param x 第几页* @param y 一页多少数据* @return 结果集*/public List<News> getFy(int X,int Y){List<News> ls = new ArrayList<News>();//找规律int a = (X-1)*Y+1;int b = X*Y;try {//创建连接con=DBHelper.getCon();//定义sql语句String sql = "select * from(\r\n" + "  select a.*,rownum as rid from(\r\n" + "         select nid,bt,zz,sj from tb_news order by nid desc\r\n" + "  ) a\r\n" + ") b where b.rid between ? and ?";//获得执行对象ps = con.prepareStatement(sql);//给占位符赋值ps.setInt(1, a);ps.setInt(2, b);//获得结果集rs = ps.executeQuery();//循环遍历while(rs.next()){//实例化一个新闻对象News n = new News();//给对象赋值n.setNid(rs.getInt(1));n.setBt(rs.getString(2));n.setZz(rs.getString(3));n.setSj(rs.getString(4));//加到集合中ls.add(n);}} catch (Exception e) {e.printStackTrace();}finally {//关闭资源DBHelper.myClose(con, ps, rs);}return ls;}

第二步就是回到放数据的那个页面,调用方法;

    <%//调用分页查询的方法List<News> ls = nd.getFy(X, Y);//List<News> ls = nd.getNews();//循环遍历for(News n:ls){//n:新闻对象%><a href="/s4/news/read.jsp?nid=<%= n.getNid() %>"><%= n.getBt() %></a><%}%>

到这一步其实也就完成了最基本的一个分页绑定,但是还是远远不够的,

不能跳转下一页上一页的分页就只有一页的数据,还不如不分页;

所以,我们接下来就来继续完成下一页、上一页、首页、尾页的代码完善!

第三步:计算出总数据的数量;

只有计算好总数据的数量才能完成后续的页面跳转!

这里还是要写一个Dao方法:

 /*** 获取总行数* @param str 表名等* @return 总行数*/public int getRows() {int r = 0;try {con=DBHelper.getCon();String sql = "select count(*) from tb_news";ps=con.prepareStatement(sql);rs=ps.executeQuery();if(rs.next()) {r = rs.getInt(1);}} catch (Exception e) {e.printStackTrace();}return r;}

第四步:计算页面最大页数;

获得总数据数量后我们就可以计算出最大页数了,

在前面先定义好第几页和一页多少数据,

还要接收一下pid用于改变当前页数【后面跳转的时候会传值】

        //第几页int X = 1;//一页多少数据int Y = 3;//接收pidString pid = request.getParameter("pid");//判断if(pid!=null){//说明点击了上一页或者下一页等X=Integer.parseInt(pid);//改变页数}

然后用总数据数量/Y等于最大值,再判断一下用总数据数量%Y,除不尽就加一;

         //实例化一个DaoNewsDao nd = new NewsDao();//计算最大页数int rows = nd.getRows("tb_news");//总数据数量   int max = rows/y;if(rows%y!=0){//除不尽//页数加一max++;//+1}

第五步:带参写入页面跳转的位置;

     <p>当前页数:[<%= X %>/<%= max %>]&nbsp;<a href="admin.jsp?pid=1">首页</a><!--三元运算符--><a href="admin.jsp?pid=<%= x-1>1?x-1:1 %>">上一页</a>                             <a href="admin.jsp?pid=<%= x<max?x+1:x %>">下一页</a><a href="admin.jsp?pid=<%= max %>">末页</a></p>

看看效果吧~


好啦,JavaWeb分页的学习笔记就到这里啦,我是Leaf,喜欢的可以关注我一起学习噢!

下期再见啦~

JavaWeb之分页代码相关推荐

  1. javaweb 分页代码

    dao方法: package com.ruojuan.Dao; import java.sql.Connection; import java.sql.PreparedStatement; impor ...

  2. javaweb实现分页(二)

    前言:我们都知道,实现分页需要三个步骤.第一,确定页大小(每页显示的数据量).第二,计算显示的总页数.第三,写分页的sql语句.这三步已经在昨天的推文中详细说明,需要的可以点击这里快速浏览:javaw ...

  3. javaweb实现分页查询(一)

    大家好,欢迎来到雄雄的小课堂,昨天分享了个分页工具类,其实,也是为今天的分享做的铺垫,今天,给大家带来的是javaweb实现分页的全过程! 前言:为什么需要分页?假设某大学有人数一万人,学生信息管理系 ...

  4. JavaWeb实现分页哦

    JavaWeb实现分页哦 分页是现在项目必备的功能,那我们来看看哦 1.首先分析分页需要哪些数据??? 1.总记录数totalpageCountsql语句 select count(*)from 表名 ...

  5. mysql通用分页_MySQL海量数据的通用存储过程分页代码

    本节主要内容: MySQL海量数据的通用存储过程分页代码 本节为大家分享一例mysql 通用存储过程分页.海量数据分页的代码. 1,测试用的表结构: 复制代码 代码示例: CREATE TABLE I ...

  6. PHP分页代码实例教程

    PHP分页代码实例教程 分享一段php分页代码,很简单,作为php分页的入门教程不错. 专题推荐:php分页代码大全    php分页原理     php分页类 数据库链接及参数设定 //数据库连接 ...

  7. php mysql ajax 分页_ajax+php+mysql无刷新分页代码(1/2)_PHP教程

    ajax+php+mysql无刷新分页代码 ajax+php教程+mysql教程无刷新分页代码 2 3 4投票结果 5 6 7 8 9 function getxmlhttpobject() 10 { ...

  8. 分页原理+分页代码+分页类制作

      分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此 ...

  9. php模型分页代码,ThinkPHP6.0模型关联分页

    模型关联分页简单案例,标签关联文章,对文章进行分页,上一篇文章写得比较繁琐,这里可以将问题拆解成一对多关系,那么问题就迎刃而解了. 我们可以通过查询tag直接拿到tag_id,通过中间表和文章表关联一 ...

  10. php ajax 分页phpapi,ajax分页_php ajax分页代码

    摘要 腾兴网为您分享:php ajax分页代码,智慧农业,长沙银行,一折包邮,信和财富等软件知识,以及381.65,红娘牵线,中经油马,战地小,歌词制作,唯美会,微软必应输入法,邓州在线,螺丝钉,侠客 ...

最新文章

  1. MySQL 服务端调优
  2. javascript基础07
  3. Nginx安装手册(摘自入云龙老师教案,亲测可用)
  4. python经典数据类型
  5. JAVA 1.5 并发之 Executor框架 (内容为转载)
  6. 渗透测试学习笔记(提权)
  7. java/php/net/python奖助学金评审管理系统设计
  8. 有密码的压缩包怎么解密
  9. BitMap算法和Java的实现类BigSet
  10. 深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写...
  11. Linux 操作rar压缩包
  12. 移动硬盘3.5寸和2.5寸的区别
  13. 高阶人工智能时代的畅想
  14. 解决docker报错:listing workers for Build: failed to list workers: Unavailable: connection error: desc =
  15. 字节(byte)、位(bit)、KB、B、字符之间关系以及编码占用位数
  16. 用 Python 快速分析你的微信好友
  17. 微信自动回复图片 api标准接口的 php代码
  18. dnsmasq 使用
  19. 三台机器安装zookeeper集群
  20. java ranger rest_Ranger前台分析

热门文章

  1. 静态路由协议的默认管理距离是_动态路由选择原理(距离矢量路由协议RIP)
  2. java代码实现 取放_java大对象存取的简单实现的代码
  3. JAVA集合系列(2):Collection和Iterator接口
  4. Sp_15_极限定理
  5. Vue 路由的模块化
  6. Cloudflare的介绍可以防DDOS 能防多少G呢?
  7. 深入理解ajax系列第九篇
  8. [机器学习实战] 基于概率论的分类方法:朴素贝叶斯
  9. 主题:小菜一碟可以怎样说
  10. BZOJ 1009 :[HNOI2008]GT考试(KPM算法+dp+矩阵快速幂)