什么是分页查询?

从数据库中查询数据,在客户端显示出来。当数据少时,可以在一个页面内显示完成。然而,如果查询记录是几百条、上千条呢?直接一个页面显示完全的话,表格得多长啊。。。。。。这时,我们可以用分页技术。

效果图如下:

分页效果的实现

原理:

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

重点在于两条语句:

select count(*) from ...:查询得到记录总条数

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

然后把数据放到一个专门带数据的Page类,Page的类构造函数封装了计算页码的算法。

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

<div class="box-tools pull-right"><ul class="pagination"><li><div class="box-tools pull-right"><input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" name="search" type ="text" placeholder="请输入页数"><input type="button" value="GO"></div></li><li><a href="${pageContext.request.contextPath }/ShowTeacherController?pageNum=1" aria-label="Previous">首页</a></li><c:if test="${page.pageNum>1 }"><li><a href="${pageContext.request.contextPath }/${page.url}?pageNum=${page.pageNum-1}">上一页</a></li></c:if>   <c:forEach begin="${page.startPage }" end="${page.endPage }" var="pageNum"><li><a href="${pageContext.request.contextPath }/${page.url}?pageNum=${pageNum}">${pageNum }</a></li></c:forEach><c:if test="${page.pageNum<page.endPage}"><li><a href="${pageContext.request.contextPath }/${page.url}?pageNum=${page.pageNum+1}">下一页</a></li></c:if><li><a href="${pageContext.request.contextPath }/${page.url}?pageNum=${page.totalPageNum}" aria-label="Next">尾页</a></li></ul></div></div>

数据显示效果:

</div><!--工具栏/--><!--数据列表--><table id="dataList" class="table table-bordered table-striped table-hover dataTable"><thead><tr><th class="" style="padding-right:0px;"><input id="selall" type="checkbox" class="icheckbox_square-blue"></th><th class="sorting_asc">ID</th><th class="sorting_desc">姓名</th><th class="sorting_asc sorting_asc_disabled">密码 </th><th class="sorting_desc sorting_desc_disabled">性别</th><th class="sorting">邮箱 </th><th class="text-center sorting">备注</th><th class="text-center">操作</th></tr></thead><tbody><c:forEach items="${page.list }" var="teacher"><tr><td><input name="ids" type="checkbox"></td><td>${teacher.id }</td><td>${teacher.name }</td><td>${teacher.password }</td><td>${teacher.gender }</td><td>${teacher.email }</td><td class="text-center">${teacher.remark }</td><td class="text-center"><a href="#"><button type="button" class="btn bg-olive btn-xs">编辑</button></a><a href="#"><button type="button" class="btn bg-olive btn-xs">删除</button></a></td></tr></c:forEach></tbody><!--<tfoot><tr><th>Rendering engine</th><th>Browser</th><th>Platform(s)</th><th>Engine version</th><th>CSS grade</th></tr></tfoot>--></table><!--数据列表/--><!--工具栏/--></div>

java代码:

controller层

service层

dao层

//查询总的列数@Overridepublic int findTotalNum() {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;int totalNum = 0;conn = DBUtil.getConnection();String sql = "select count(*) from teacher";try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()){totalNum = rs.getInt(1);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DBUtil.closeAll(conn, ps, rs);return totalNum;}//返回分页查询的每页信息@Overridepublic List<Teacher> findTeacherBypage(int startIndex, int pageSize) {// TODO Auto-generated method stubConnection conn = null;PreparedStatement ps = null;ResultSet rs = null;ArrayList<Teacher> list = new ArrayList<Teacher>();conn = DBUtil.getConnection();String sql = "select id,name,password,gender,email,remark from teacher limit ?,?";try {ps = conn.prepareStatement(sql);ps.setInt(1, startIndex);ps.setInt(2, pageSize);rs = ps.executeQuery();while(rs.next()){Teacher teacher = new Teacher();teacher.setId(rs.getInt(1));teacher.setName(rs.getString(2));teacher.setPassword(rs.getString(3));teacher.setGender(rs.getString(4));teacher.setEmail(rs.getString(5));teacher.setRemark(rs.getString(6));list.add(teacher);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DBUtil.closeAll(conn, ps, rs);return list;}

JavaWeb分页显示内容和数据库分页查询相关推荐

  1. mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...

    JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...

  2. linux分页显示所有文件内容,Linux more分页显示内容命令详解

    名称:more 使用权限:所有使用者 使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] 说明:类似 cat ,不过会以一 ...

  3. linux history命令显示时间_每天一条Linux命令(29) more (分页显示内容)

    在上一篇中我们学习了命令 less ,其作用是以分页的形式查看文件内容并可以对内容进行交互式操作.今天我们学习到的是命令 more,从字面意思乍一看命令less与命令more恰好为互反的两条命令,但其 ...

  4. java页面分页显示代码_通用分页jsp页面显示

    注:本章内容都是在上一篇文章 通用分页后台显示:https://www.cnblogs.com/ly-0919/p/11058942.html  的基础上进行改进,所以有许多的类都在上一篇, 带来不便 ...

  5. 用php做一个分页显示的,php一个分页显示类

    php一个分页显示类推荐查看本文HTML版本 <?php * 说明: * 1. 配合MYSQL数据库使用 * 2. 类没有提供连接数据库的功能,需在外部建立数据库连接. * */ /* ...

  6. linux管道方式分页显示,linux命令中分页等管道符的使用

    linux使用命令查看很多东西的时候,一般都会选择使用管道符,要么为了过滤,要么为了分页显示,总之这些管道符有着很重要的作用. 管道 管道简单理解就是,使用管道意味着第一个命令的输出会作为第二个命令的 ...

  7. oracle分页的方法,Oracle数据库分页的集中方法(三种方法)

    在 做项目中用到了分页,下面说一下oracle分页的方法; 采用伪列 rownum 查询前10条记录 [sql] select * from t_user t where ROWNUM <10; ...

  8. java word 分页显示_jsp转word + 分页

    最近项目开发中,需要将页面转为Word. 同时需要在保存为Word时分页处理. 经过参考一些方法,采用如下处理方式,一共参考: 1.页面转为Word方式处理 在页面开头的位置加上JAVA代码 我使用了 ...

  9. sqlserver 分页_四类数据库分页实现方案总结之PG分页实现

    概述 前面介绍了Oracle.mysql.sqlserver的分页实现方案了,所以今天主要介绍一下关于PG的分页实现.传统的精准分页(能获取到总页数并且任意跳转页码)在需要符合条件的记录总数目,不过p ...

  10. 浅谈AJAX并实现使用pagehelper-5.1.10.jar分页插件实现异步从数据库中获取数据分页显示

    AJAX异步请求 什么是ajax 异步 JavaScript 同步和异步的区别 同步方式:正常情况下,浏览器与服务器之间是串行操作,类似于一个Java线程的操作. 异步方式:浏览器与服务器是并行操作, ...

最新文章

  1. leetcode C++ 4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log
  2. 华硕笔记本:Ubuntu 18.04安装Nvidia驱动
  3. 哈希表的画法_智慧树知到_机械制图A_答案新版
  4. windows下安装及配置 golang 的Web框架Beego环境
  5. 又一所“国字头”大学要来?屠呦呦也在
  6. 软考系统架构师笔记-综合知识重点(三)
  7. Javascript、Jquery获取浏览器和屏幕各种高度宽度
  8. Go语言并发机制初探
  9. RHCSA红帽认证考点2022(红帽认证系统管理员)
  10. 2023南昌大学计算机考研信息汇总
  11. Python微博项目
  12. 计算机的大于键盘哪里,怎样在键盘上打出大于等于号,小于等于号?键盘大于等于号怎么打?...
  13. 创业者需要了解的基本财务知识
  14. 实验记录 | 6/29
  15. 中国能源与环保领域知名的调查研究咨询公司
  16. 25 网站应用攻击与防御
  17. C语言邻接矩阵的实现
  18. 支付宝支付接口遇到的问题总结
  19. 3D点云论文相关论文资料总结
  20. clearCallingIdentity与restoreCallingIdentity-千里马framework系统源码实战详解

热门文章

  1. AI能力在智慧养殖应用现状
  2. Jetpack DataStore 你总要了解一下吧?
  3. 使用PS旋转单个图层
  4. Lifelong learning with dynamically expandable networks - 使用动态可扩展网络的终身学习-不完全记录
  5. Python连接SQL Server 之pyodbc
  6. 利用shell删除labelme打错的标签
  7. 电脑分辨率怎么调?教你调整电脑屏幕分辨率
  8. Ubuntu安装、更新显卡驱动
  9. 勒让德多项式的正交性和归一化
  10. JavaScript 详解(表单验证,JSON,JS事件,JS函数)