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接口实现的 ...
随机推荐
- CodeForces 682E Alyona and Triangles (计算几何)
Alyona and Triangles 题目连接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/J Description You ar ...
- freemaker获取字符串长度
freemarker 判断字符串长度大于多少或者int变量大于多少,比较<#if "test"?length gt 2> 长度大于2</#if> 大于 ...
- IOS开发--数据持久化篇之文件存储(一)
前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不 ...
- Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)
解决什么问题? 动画分层可以用来解决什么样的问题呢?试想一下如果你要开发一款第三人称的射击游戏,那么肯定是希望身体的动画分为上下两部分,上方根据瞄准的位置和是否射击进行动画播放,下方根据移动播放动画. ...
- 再次理解JavaScript原型链和匿名函数
<!--------------------------------------------- 1.演示匿名加载 2.js单进程执行流 3.原型链理解 a.__proto__:属性每个对象都有 ...
- apache win openssl
Rubayat Hasan Software Development, Music, Web Design, life, thoughts… Home Portfolio Projects Con ...
- Linux下C程序的编辑,编译和运行以及调试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- MEF 编程指南(三):声明导出
组合部件通过 [System.ComponentModel.Composition.ExportAttribute] 特性声明导出.MEF 有几种不同的方式声明导出,包括在部件层面(Part Leve ...
- ListView上移 和下移
有问题 //ListBox选中的项目移动到第1位 Listbox1.Items.Move(ListBox1.ItemIndex,0); //ListView选中的项目移动到第1 ...
- search result
https://github.com/search?l=java&p=86&q=Floating+window&type=Code&utf8=%E2%9C%93http ...