java-分页之页面分页
import java.util.ArrayList;
import java.util.List; /**
*
* @author cheney
*
* @date Aug 31, 2012
*/
public class PageModel<T> {
private int page = 1; // 当前页
public int totalPages = 0; // 总页数
private int pageRecorders;// 每页5条数据
private int totalRows = 0; // 总数据数
private int pageStartRow = 0;// 每页的起始数
private int pageEndRow = 0; // 每页显示数据的终止数
private boolean hasNextPage = false; // 是否有下一页
private boolean hasPreviousPage = false; // 是否有前一页
private List<T> list; /**
*
* @param list
* @param pageRecorders
*/
public PageModel(List<T> list, int pageRecorders) {
init(list, pageRecorders);// 通过对象集,记录总数划分
} /** */
/**
* 初始化list,并告之该list每页的记录数
*
* @param list
* @param pageRecorders
*/
public void init(List<T> list, int pageRecorders) {
this.pageRecorders = pageRecorders;
this.list = list;
totalRows = list.size(); hasPreviousPage = false; if ((totalRows % pageRecorders) == 0) {
totalPages = totalRows / pageRecorders;
} else {
totalPages = totalRows / pageRecorders + 1;
} if (page >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
} if (totalRows < pageRecorders) {
this.pageStartRow = 0;
this.pageEndRow = totalRows;
} else {
this.pageStartRow = 0;
this.pageEndRow = pageRecorders;
}
} public String displayForPage(String method) {
StringBuffer sb = new StringBuffer();
sb.append("<div class=\"w-page\"><label class=\"fr\">"); // 判断是否有上一页
if (this.isHasPreviousPage()) {
sb.append("<a href=\"javascript:void(0)\" onclick=\"" + method
+ "('" + String.valueOf(this.getPage() - 1)
+ "');return false;\">上一页</a>");
} else {
sb.append("<span class=\"disabled\">上一页</span>");
} // 中间显示
for (int i = 1; i <= this.getTotalPages(); i++) {
String spanClzz = "<a href=\"javascript:void(0)\" onclick=\""
+ method + "('" + String.valueOf(i) + "');return false;\">"
+ i + "</a>"; if (this.page == i) {
spanClzz = "<span class='current'>" + i + "</span>";
}
sb.append(spanClzz); // 当大于9页数的时候才进行分页显示
if (this.getTotalPages() - 2 > 7) {
if (i == 5) {
i = this.getTotalPages() - 2;
sb.append("...");
}
}
}
// 判断是否有下一页
if (this.isHasNextPage()) {
sb.append("<a href=\"javascript:void(0)\" onclick=\"" + method
+ "('" + String.valueOf(this.getPage() + 1)
+ "');return false;\">下一页</a>"); } else {
sb.append("<span class=\"disabled\">下一页</span>");
} sb.append("</div>");
return sb.toString();
} public String displayForPage() {
StringBuffer sb = new StringBuffer();
sb.append("<div class=\"w-page\"><label class=\"fr\">"); // 判断是否有上一页
if (this.isHasPreviousPage()) {
sb
.append("<a href=\"javascript:void(0)\" onclick=\"findDistResult('"
+ String.valueOf(this.getPage() - 1)
+ "');return false;\">上一页</a>");
} else {
sb.append("<span class=\"disabled\">上一页</span>");
} // 中间显示
for (int i = 1; i <= this.getTotalPages(); i++) {
String spanClzz = "<a href=\"javascript:void(0)\" onclick=\"findDistResult('"
+ String.valueOf(i) + "');return false;\">" + i + "</a>"; if (this.page == i) {
spanClzz = "<span class='current'>" + i + "</span>";
}
sb.append(spanClzz); // 当大于9页数的时候才进行分页显示
if (this.getTotalPages() - 2 > 7) {
if (i == 5) {
i = this.getTotalPages() - 2;
sb.append("...");
}
}
}
// 判断是否有下一页
if (this.isHasNextPage()) {
sb
.append("<a href=\"javascript:void(0)\" onclick=\"findDistResult('"
+ String.valueOf(this.getPage() + 1)
+ "');return false;\">下一页</a>"); } else {
sb.append("<span class=\"disabled\">下一页</span>");
} sb.append("</div>");
return sb.toString();
} // 判断要不要分页
public boolean isNext() {
return list.size() > 5;
} public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
} /**
*
* @return
*/
public List<T> getNextPage() {
page = page + 1;
disposePage();
return getObjects(page);
} /**
* 处理分页
*/
private void disposePage() {
if (page == 0) {
page = 1;
}
if ((page - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
} if (page >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
} /**
* 上一页
*
* @return
*/
public List<T> getPreviousPage() {
page = page - 1; if ((page - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
if (page >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
return getObjects(page);
} /**
* 获取第几页的内容
*
* @param page
* @return
*/
public List<T> getObjects(int page) {
if (page == 0) {
this.setPage(1);
page = 1;
} else {
this.setPage(page);
} this.disposePage(); if (page * pageRecorders < totalRows) {// 判断是否为最后一页
pageEndRow = page * pageRecorders;
pageStartRow = pageEndRow - pageRecorders;
} else {
pageEndRow = totalRows;
pageStartRow = pageRecorders * (totalPages - 1);
} List<T> objects = null;
if (!list.isEmpty()) {
objects = list.subList(pageStartRow, pageEndRow);
}
return objects;
} /**
* 第一页
*
* @return
*/
public List<T> getFistPage() {
if (this.isNext()) {
return list.subList(0, pageRecorders);
} else {
return list;
}
} /**
* @return the page
*/
public int getPage() {
return page;
} /**
* @param page
* the page to set
*/
public void setPage(int page) {
this.page = page;
} /**
* @return the totalPages
*/
public int getTotalPages() {
return totalPages;
} /**
* @param totalPages
* the totalPages to set
*/
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
} /**
* @return the pageRecorders
*/
public int getPageRecorders() {
return pageRecorders;
} /**
* @param pageRecorders
* the pageRecorders to set
*/
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders;
} /**
* @return the totalRows
*/
public int getTotalRows() {
return totalRows;
} /**
* @param totalRows
* the totalRows to set
*/
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
} /**
* @return the pageStartRow
*/
public int getPageStartRow() {
return pageStartRow;
} /**
* @param pageStartRow
* the pageStartRow to set
*/
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
} /**
* @return the pageEndRow
*/
public int getPageEndRow() {
return pageEndRow;
} /**
* @param pageEndRow
* the pageEndRow to set
*/
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
} /**
* @return the hasNextPage
*/
public boolean isHasNextPage() {
return hasNextPage;
} /**
* @param hasNextPage
* the hasNextPage to set
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
} /**
* @return the list
*/
public List<T> getList() {
return list;
} /**
* @param list
* the list to set
*/
public void setList(List<T> list) {
this.list = list;
} /**
* @return the hasPreviousPage
*/
public boolean isHasPreviousPage() {
return hasPreviousPage;
} /*
*
* @param args
*/
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
list.add("g");
list.add("h");
list.add("h");
list.add("i");
list.add("j"); System.out.println(list.size()); PageModel<String> pm = new PageModel<String>(list, 3);// 每页显示条数 pm.getObjects(1); System.out.println(pm.displayForPage("disResult"));
} }
java-分页之页面分页的更多相关文章
- java分页之页面分页
import java.util.ArrayList; import java.util.List; /** * * @author cheney * * @date Aug 31, 2012 */ ...
- 分页技术框架(Pager-taglib)学习一(页面分页)
一.Pager-taglib简介 1.Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多 ...
- pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...
- 基于视觉的Web页面分页算法VIPS的实现源代码下载
基于视觉的Web页面分页算法VIPS的实现源代码下载 - tingya的专栏 - 博客频道 - CSDN.NET 基于视觉的Web页面分页算法VIPS的实现源代码下载 分类: 技术杂烩 2006-04 ...
- js 将很长的内容进行页面分页显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 菜鸟学Java(十)——分页查询
今天继续跟大家说说一些非常基础的东西,这次我们说说分页查询.说到分页,可能很多人都听说过什么真分页.假分页的.简单解释一下,拿第二页,每页20条为例:真分:数据库里取 的就是21-40条:假分:数据库 ...
- Java代码实现真分页
在JavaWeb项目中,分页是一个非常常见且重要的一个小方面.本次作为记载和学习,记录项目中出现的分页并做好学习记录.在这里,用的是SSH框架.框架可以理解如下图: 在JSP页面,描写的代码如下: & ...
- 【jQuery 分页】jQuery分页功能的实现
自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部 和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...
- EasyUI表格DataGrid前端分页和后端分页的总结
Demo简介 Demo使用Java.Servlet为后台代码(数据库已添加数据),前端使用EasyUI框架,后台直接返回JSON数据给页面 1.配置Web.xml文件 <?xml version ...
- Spring MVC和Spring Data JPA之按条件查询和分页(kkpaper分页组件)
推荐视频:尚硅谷Spring Data JPA视频教程,一学就会,百度一下就有, 后台代码:在DAO层继承Spring Data JPA的PagingAndSortingRepository接口实现的 ...
随机推荐
- HDU 5762 Teacher Bo (暴力)
Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...
- iOS 8版本信息与屏幕尺寸
原文 http://www.cnblogs.com/smileEvday/p/iOS8.html 1.UIWindow的bounds iOS 7之前Window的bounds不会随着方向而变化, ...
- 340. Longest Substring with At Most K Distinct Characters
最后更新 二刷 08-Jan-2017 和76.159很像.. 2 pointers.. 通过判断是否每一次是有效读取来增减accumulator,从而判断当前是否符合规定,再来更新maxLength ...
- Linux在向磁盘新建文件的时候在系统层面的四步操作
----------- 1.存储文件属性.内核先找到一个空的i节点,并把文件属性信息记录其中. 2.存储数据.先计算要多少个磁盘块,在内核自由块列表找到合适数量的磁盘块,并把数据从内核的缓冲区依次 ...
- Nltest
查看登陆到的DC:
- CDOJ 481 Apparent Magnitude 水题
Apparent Magnitude Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/sh ...
- C#窗体间通讯的几种处理方法
应用程序开发中,经常需要多窗体之间进行数据通信,写几个例子,把几种常用的通信方式总结一下: 主窗体Form1是一个ListBox,单击选中某列时,弹出窗体Form2,Form2中两个控件,一个是Tex ...
- osg通过glsl实现一个平面的水效果(法线贴图) 【转】
转自 http://blog.sina.com.cn/s/blog_78ea87380101ehk3.html 此文实现一个简单的的水面效果,主要是法线贴图, 效果图如下: 此文分为三部分:ver ...
- myeclipse-10.7-offline-installer-windows安装图解及注意事项
MyEclipse企业级工作平台(MyEclipseEnterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们能够在数据库和JavaEE的开发.公布 ...
- XML Helper XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...