java面试题网站:www.javaoffers.com
package cn.mh.elect.util;
import java.util.ArrayList;
import java.util.List;
/**分页对象
* @author CMJ(曹明杰)
* @date 2017-3-19 上午9:22:11
*/
public class FPage {
private int pageNum;//前台传来的页码 别名currentPage
private int pageSize;//显示的条数
private int begeinIndex;//查询分页开始索引
private int allCount;//总条数
private int allPageSize;//总页数
private int firstPage;//首页
private int endPage;//尾页
/**利用窗户的思想:把前台传来的当前页当作窗户的中心(窗户的中心索引位置:长度(基数最好--)加+1再除于2,偶数则加+2后再除于2)**/
private int viewFirstPageNnm;//逻辑上的起始页---窗户最左端 (为任意正负数)
private int viewEndPageNum;//逻辑上结束页---窗户最右端 (为任意正负数)
private int[] first_endPageNum;//存放显示的页码---窗户的范围内容
private int viewPageSize; //jsp页面要显示的页数 默认为10
private List<Object> list = new ArrayList<Object>();//存放查询对象的集合
private boolean hasNextPage = false;//判断是否有下一页(默认没有)
/** 分页的构造方法 初始化数据
* @param pageNum 前端传来的查询页码 ,默认为1,如果页码大于最大页,则pageNum的值为最大页
* @param allCount 从数据库查询的总条数
*/
public FPage(int pageNum, int allCount) {
super();
this.pageSize = 3;//默认为3条
this.viewPageSize = 10;//
this.pageNum = pageNum;
this.allCount = allCount;
/**计算总页数**/
this.allPageSize = this.allCount%pageSize==0? this.allCount/pageSize : this.allCount/pageSize+1;
if(pageNum<=0)
this.pageNum = 1;
if(pageNum>this.allPageSize)
this.pageNum = this.allPageSize;
/**计算查询的开始索引值**/
this.begeinIndex = (this.pageNum-1)*this.pageSize;
/**开始页码默认值为1**/
this.firstPage = 1;
/**计算尾页码(总页数就是为尾页码)**/
this.endPage = this.allPageSize;
//算出窗口 最前端和最后端的位置
if(this.allPageSize>this.viewPageSize){//总页数一定大于页数长度
if(this.viewPageSize/2==0){//如果是偶数
this.viewFirstPageNnm = this.pageNum-((this.viewPageSize+2)/2-1);
this.viewEndPageNum = this.pageNum+(this.viewPageSize-((this.viewPageSize+2)/2));
}else{//奇数
this.viewFirstPageNnm = this.pageNum - ((this.viewPageSize+1)/2-1);
this.viewEndPageNum = this.pageNum+(this.viewPageSize-((this.viewPageSize+1)/2));
}
}
/**两种情况:1:显示页数大于等于总页数 viewPageSize>allPageSize, 2:显示页数小于总页数**/
if(this.viewPageSize>=this.allPageSize){
first_endPageNum = new int[this.allPageSize];//指定长度
//存放页码
for(int i = 0;i<this.allPageSize;i++){
first_endPageNum[i] = i+1;
}
}else{
//-------------------
first_endPageNum = new int[this.viewPageSize];
//判断当前 左窗口端是否小于1 默认 1 2 3 4 ...viewPageSize 包含1
if(this.viewFirstPageNnm<1){
for(int i = 0;i<this.viewPageSize;i++){
first_endPageNum[i] = i+1;
}
}//判断当前 右窗口端是否超出了页数的最大值 例如 7 8 9 ...viewPageSize 不包括7
else if(this.viewEndPageNum>this.allPageSize){
for(int i = 0;i<this.viewPageSize;i++){
first_endPageNum[i] = this.allPageSize-(this.viewPageSize-(i+1));
}
}else{//窗口的前后端都在范围之内
first_endPageNum = new int[this.viewPageSize];
for(int i=0;i<this.viewPageSize;i++){
first_endPageNum[i] = this.viewFirstPageNnm+i;
}
}
//------------------
}
}
public boolean isHasNextPage() {
if(this.allPageSize>this.pageNum)
this.hasNextPage = true;
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public List<Object> getList() {
return list;
}
public int getViewFirstPageNnm() {
return viewFirstPageNnm;
}
public void setViewFirstPageNnm(int viewFirstPageNnm) {
this.viewFirstPageNnm = viewFirstPageNnm;
}
public int getViewEndPageNum() {
return viewEndPageNum;
}
public void setViewEndPageNum(int viewEndPageNum) {
this.viewEndPageNum = viewEndPageNum;
}
public int[] getFirst_endPageNum() {
return first_endPageNum;
}
public void setFirst_endPageNum(int[] first_endPageNum) {
this.first_endPageNum = first_endPageNum;
}
public int getViewPageSize() {
return viewPageSize;
}
public void setViewPageSize(int viewPageSize) {
this.viewPageSize = viewPageSize;
}
public void setList(List<Object> list) {
this.list = list;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getBegeinIndex() {
return begeinIndex;
}
public void setBegeinIndex(int begeinIndex) {
this.begeinIndex = begeinIndex;
}
public int getAllCount() {
return allCount;
}
public void setAllCount(int allCount) {
this.allCount = allCount;
}
public int getAllPageSize() {
return allPageSize;
}
public void setAllPageSize(int allPageSize) {
this.allPageSize = allPageSize;
}
public int getFirstPage() {
return firstPage;
}
public void setFirstPage(int firstPage) {
this.firstPage = firstPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
}