全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java Web中常用的分页组件(Java端实现)

 前言

好久没写Web程序了,这一段时间看了看原来师弟们做的一些程序,感觉还是有很多不足,一个比较典型的例子就是分页查询的实现,正好借着这个机会简单记录一下。

分析

使用场景

“分页”在Web程序里非常常见,比如我们在页面上经常要展示一些列表信息,通常情况下,如果数据过多,我们在一屏上难以罗列出所有的记录,而且很多时候我们可能只是看看比较Top的一些记录,因此,在这种情况下使用“分页”查询只展示部分数据是比较合适的。

实现原理

从数据库角度上来说,分页查询实现的难度并不是很大,当然不同的数据库实现是有一些差异的。以MySQL为例,我们通常会写出如下的SQL语句:

# 简单的单表查询
select [fields] from [table_name] where [expression] order by [field] [asc|desc] limit [offset], [size]

其中有几处地方我们比较关注,第一个就是order by后的字段field和排顺规则,第二个就是limit之后的数据偏移量offset和大小size。

所以,以上几个参数是我们实现分页查询一个关键。

实现

这里的实现主要是指Java后台的实现,关于如何编写一个前端分页插件不在此文的讨论之列。我们来简单梳理一下整个业务逻辑的交互过程,就是”前端查询参数”->”后台业务逻辑查询”->”返回结果集到前端”。

那么问题来了,前端一般要传递哪些参数到服务器后台呢?

回到上面的实现原理上,我们发现,这4个参数我们都是需要的,而且它们不是固定的。从开发角度上来讲,我们首先需要的参数是sortField,sortOrder,即排一定的计算序字段和排序方式,offset我们通常会根据一定的计算规则进行计算,一般在页面上我们使用的是pageCurrent,即用户需要查询的页数,另外页面还必须传递一个参数即pageSize,即每页要显示的数据总量,这样,我们就可以根据pageCurrent和pageSize来计算出offset和size,计算公式如下所示:

offset=(pageCurrent−1)∗pageSize
size=pageSize

OK,我们梳理出来了4个字段,即sortField,sorOrder,pageCurrent和pageSize。这些参数是前台应该传递给后台服务的,当然,从程序的健壮性来说,如果用户不传递这些字段,我们也应该有一些默认的实现,比如说如果不传递当前页数,我们默认就是第一页,如果不传递pageSize,我们可以默认其大小为每页30条……那么,第一个Java Bean就出来了,我们称为PageParam类。

 public class PageParam {
  private static final Integer DEFAULT_PAGE_CURRENT = 1;
  private static final Integer DEFAULT_PAGE_SIZE = 30;
  /**
   * 排序字段
   */
  private String sortField;
  /**
   * 排序方式
   * asc | desc
   */
  private String sortOrder;
  /**
   * 查询的当前页
   */
  private Integer pageCurrent = DEFAULT_PAGE_CURRENT;
  /**
   * 查询的数据条目
   */
  private Integer pageSize = DEFAULT_PAGE_SIZE;
  ......
}

现在,我们先忽略服务器端的具体处理流程,来思考一下服务器端需要返回哪些信息到前端页面上进行展示。
下面是我从网上截取的一个典型分页界面(如不能引用请私信我):

 

通过分析,可以看到,当前页pageCurrent是需要的,且通常会特殊展示。另外如果页数过多,在前端界面里通常只会展示部分页值,那么我们也需要来进行判断,通常情况下我们通过判断总页数即可,那么总页数totalPage是需要的。当然,还有一些隐含的参数我们通常也是要传递给前端进行相关的业务处理的,比如说数据的总条目totalSize和一页显示的数量pageSize,这些通常都会在页面进行展示。第二个Java Bean我们成为PageResult类:

public class PageResult<T> {
  /**
   * 返回的数据结果集
   */
  private List<T> resultList;
  /**
   * 总数据条目
   */
  private Integer totalSize;
  /**
   * 总页数
   */
  private Integer totalPage;
  /**
   * 当前页
   */
  private Integer pageCurrent;
  /**
   * 显示的数据条目
   */
  private Integer pageSize;
  ......
}

这里totalPage其实是可以根据pageSize和totalSize进行计算出来的,计算公式如下:

totalPage=totalSize%pageSize==0?totalSize/pageSize:(totalSize/pageSize+1)

在实现里,我们对结果集使用了泛型,主要是为了通用处理。还差最后一点,就是服务器端的处理逻辑,这里不太好说的原因在于现在服务器端的框架太多,如MyBatis,spring JDBC,hibernate等等。不同的框架使用上是有较大差别的,不过有一些比较通用的做法这里简单记录一下。

对任何前端传递过来的参数都必须进行校验。这里主要是pageCurrent和pageSize,因为用户很可能传递过来一些无效值,比如负值-1以及一些不合适值如pageSize取100000000等。

排序字段不是必须的。要根据业务来处理,因为很多时候通过id或者其它字段默认实现就可以了,不需要进行重新排序。
pageSize的值要合适。如果太小会造成页面过于空洞,页数过多;而取值过大则会使页面内容繁杂,通常在一屏比较合适,不需要用户拉动滑动条。

以上所述是小编给大家介绍的Java Web中常用的分页组件(Java端实现),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java  # web  # 分页组件  # JavaWeb分页的实现代码实例  # java web实现分页查询实例方法  # javaweb分页原理详解  # JavaWeb 简单分页实现代码  # JavaWeb中的简单分页完整代码(推荐)  # Java Web 简单的分页显示实例代码  # 举例详解用Java实现web分页功能的方法  # Java web velocity分页宏示例  # java web手写实现分页功能  # 分页  # 通常会  # 第一个  # 是有  # 不需要  # 每页  # 第二个  # 在一  # 小编  # 当前页  # 就可以  # 比较合适  # 计算公式  # 的是  # 都是  # 情况下  # 几个  # 来了  # 出来了  # 太多 


相关文章: 高防服务器:AI智能防御DDoS攻击与数据安全保障  ,想在网上投简历,哪几个网站比较好?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何在云服务器上快速搭建个人网站?  建站之星后台密码遗忘如何找回?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何获取开源自助建站系统免费下载链接?  c# 在高并发场景下,委托和接口调用的性能对比  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  电商网站制作价格怎么算,网上拍卖流程以及规则?  已有域名和空间如何搭建网站?  如何实现建站之星域名转发设置?  微信小程序 input输入框控件详解及实例(多种示例)  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何通过WDCP绑定主域名及创建子域名站点?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何用虚拟主机快速搭建网站?详细步骤解析  金*站制作公司有哪些,金华教育集团官网?  简单实现Android验证码  黑客如何通过漏洞一步步攻陷网站服务器?  建站之星伪静态规则如何设置?  定制建站方案优化指南:企业官网开发与建站费用解析  建站之星后台密码遗忘或太弱?如何重置与强化?  贸易公司网站制作流程,出口贸易网站设计怎么做?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  C++时间戳转换成日期时间的步骤和示例代码  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  南京网站制作费用,南京远驱官方网站?  黑客入侵网站服务器的常见手法有哪些?  建站之星客服服务时间及联系方式如何?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何用y主机助手快速搭建网站?  网站app免费制作软件,能免费看各大网站视频的手机app?  网站制作企业,网站的banner和导航栏是指什么?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  模具网站制作流程,如何找模具客户?  建站之星在线客服如何快速接入解答?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  如何通过虚拟主机快速搭建个人网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星备案是否影响网站上线时间?  如何通过服务器快速搭建网站?完整步骤解析  长沙企业网站制作哪家好,长沙水业集团官方网站?  移民网站制作流程,怎么看加拿大移民官网?  建站与域名管理如何高效结合? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。