分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

【博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708】https://www.cnblogs.com/m-yb/p/9986309.html分页功能的实现可以使用各种插件, 笔者今日闲来无事, 写了 分页工具类 前后台代码 Java JavaScript 的 实现及思路梳理.供大家参考.分页功能的需求一般有: 当前页/每页条数/总页数/总记录数/起始记录数/数据 等.此工具类还可实现浏览器端修改每页条数的需求.话不多说, 上代码:先来后端的Java代码分页工具类
 1 package com.github.mayangbo666.util;
 2
 3 import java.util.List;
 4
 5 public class PageHolder<T> {
 6
 7     private int curPage;// 当前页
 8     private int pageNum;// 每页条数
 9     private int totalCount;// 总记录数
10     private int totalPage;// 总页数
11     private int offset;// 起始记录数
12     private List<T> data;// 数据
13
14     public PageHolder(int curPage, int pageNum, int totalCount) {
15         this.curPage = curPage;
16         this.pageNum = pageNum;
17         this.totalCount = totalCount;
18         init();
19     }
20
21     private void init() {
22         processTotalPage();
23         processOffset();
24     }
25
26     private void processTotalPage() {
27         this.totalPage = (totalCount % pageNum) == 0 ? totalCount / pageNum : totalCount / pageNum + 1;
28     }
29
30     private void processOffset() {
31         this.offset = (curPage - 1) * pageNum;
32     }
33
34     public int getCurPage() {
35         return curPage;
36     }
37
38     public int getPageNum() {
39         return pageNum;
40     }
41
42     public int getTotalCount() {
43         return totalCount;
44     }
45
46     public int getTotalPage() {
47         return totalPage;
48     }
49
50     public int getOffset() {
51         return offset;
52     }
53
54     public List<T> getData() {
55         return data;
56     }
57
58     public void setData(List<T> data) {
59         this.data = data;
60     }
61 }

Java代码使用解释如下:

使用时, 先从数据库统计出带条件的不分页的总记录条数totalCount;

然后创建要返回的 PageHolder(int curPage, int pageNum, int totalCount)对象;

通过该对象获得 offset;

再用offset, pageNum 分页查出条件的List记录;

视情况封装如PageHolder;

再来看看 JavaScript代码:


<script type="application/javascript" id="my">    // author mayangbo666    // 作者 mayangbo666

var curPage = 1    var pageNum = 1 // 每页条数    var totalPage = 1

// 首页    function first() {        curPage = 1        listFlow(curPage)    }

// 尾页    function last() {        curPage = totalPage        listFlow(curPage)    }

// 上一页    function pre() {        if (1 == curPage){            return        }        curPage -= 1        listFlow(curPage)    }

// 下一页    function next() {        if (curPage == totalPage) {            return        }        curPage += 1        listFlow(curPage)    }

// 当前页 / 总页数    function curPageAndTotalPage(a, b) {      $(‘#curPage_totalPage‘).html(a + ‘/‘ + b)    }

function getPageNum(pageNumN) {        pageNum = pageNumN        listFlow(curPage)    }

function listFlow(curPage) {        $.ajax({            type: ‘post‘,            dataType: ‘json‘,            url: ‘/listFlow‘,            data: {                cardNum: $("#cardDiv").val(),                password: $("#pwd").val(),                curPage: curPage,                pageNum: pageNum            },            success: function (dataResult) {                if (!dataResult.success){                    alert(dataResult.message)                    return false                }

var flows = dataResult.data.data

totalPage = dataResult.data.totalPage                curPageAndTotalPage(curPage, totalPage)

var msg = ‘该卡还没有交易数据‘

for (var i=0; i< flows.length; i++){                    var flow = flows[i]                    msg += ‘<tr class="gradeX">‘                    msg += ‘<td>‘+ flow.cardNum +‘</td>‘                    msg += ‘<td>‘+ flow.tradeAmount +‘</td>‘                    msg += ‘<td>‘+ flow.tradeType +‘</td>‘                    msg += ‘<td>‘+ flow.createTime +‘</td>‘                    msg += ‘</tr>‘                }                $("#flowListDiv").html(msg)            }        })    }</script>

JavaScript代码这里稍微解释一下:

listFlow函数传入curPage;

发送ajax请求,后端返回AjaxVO对象(ps: 可找笔者的关于ajax前后端代码的文章);

取出各记录;

取出java分页工具类返回的总页数等信息, 通过函数curPageAndTotalPage(curPage, totalPage)写入页面;

for循环解析各记录的各字段, 写入页面;

然后有每页条数的下拉框<select><option>当下拉框的值变化时, 触发curPageAndTotalPage函数, 将新的值刷入页面;

首页/尾页/上一页/下一页 则:

根据条件对当前页赋值, 重新调用listFlow函数传入curPage, 发送ajax请求去后天查一遍即可.



原文地址:https://www.cnblogs.com/m-yb/p/9986309.html

时间: 2024-08-05 19:33:59

分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解的相关文章

Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: PageUtil.java 1 package util; 2 3 import java.util.Map; 4 5 /** 6 * 分页工具类 7 * @author lyh 8 * 9 */ 10 public class PageUtil { 11 private int total; //总数

个人常用工具类:分页工具类

import java.io.Serializable; import java.util.List; // 分页工具类 public class PageBean implements Serializable { private static final long serialVersionUID = -8741766802354222579L; private int pageSize = 5; // 每页显示多少条记录 private int currentPage = 1; //当前第

c#分页工具类,完美实现List分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ProjectProgress.BLL { /// <summary> /// 分页工具类 /// </summary> /// <typeparam name="T"></typeparam> public class PagingUtil<T

Java内存分页工具类

前言 工作过程中,经常会遇到基于内存数据进行分页处理的情况,例如批量更新数据库时,集合过大需要分批更新的情况,还有例如对缓存中的集合数据进行分页获取这种情况. 本文提供了通用的内存分页工具,参考了网络上的一些代码,主要基于 subList() 方法实现,希望对你有所帮助!工具类源码在本文底部. 本文原文链接地址:http://nullpointer.pw/Java%E5%86%85%E5%AD%98%E5%88%86%E9%A1%B5%E5%B7%A5%E5%85%B7%E7%B1%BB.htm

使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码

?? 1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那些js可以参考JCrop案例: 3.编写的html代码如下: <div id="light" class="white_content"> <div class="vatitlee"> 封面截取 <div class=&

通用分页工具类

一.本工具与数据库.框架.展现层无关.代码如下: /** * 用于分页的工具类 */ public class Pager<T> { private List<T> list = new ArrayList<T>(); //对象记录结果集 private int total = 0; // 总记录数 private int pageSize = 10; // 每页显示记录数 private int pageCount = 1; // 总页数 private int pa

Java语言Lang包下常用的工具类介绍_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现. 在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Webs

分页工具类及其使用

Pager.java 1 package pers.kangxu.datautils.common; 2 3 import java.io.Serializable; 4 import java.util.List; 5 6 /** 7 * 8 * <b> 分页通用类 </b> 9 * 10 * @author kangxu 11 * @param <T> 12 * 13 */ 14 public class Pager<T> implements Seri

java 分页工具类

//13年写的,今天(17)拷贝到博客园 package com.sicdt.sicsign.web.utils; import java.io.Serializable; import java.util.List; /** * @author shizhenwei * * @param <T>用于向前台返还List所用 */ public class PageInfo<T> implements Serializable { private static final long