如有不清楚的地方还可网上交流QQ:76968802 EMAIL:houzm13@163.com
首先这个分页逻辑也不全是自己写出来的,是在别人的基础上作一修改的,在之后的文章上还会详细的讲述如何应用。
大家都知道每访问一次数据库都会影响程序的效率,为此要减少访问数据库。这个分页的逻辑为,每从数据库中读一次记录时,就先取出一百条记录,并分出10页来,每页有10条记录。然后放在session中,当要读下一页时只以访问session中的下一页就行了。大大提高了效率。当然也相应的增加了服务器的少量负担。
package com.host.struts.service;
/**
* MyEclipse Struts Creation date: 08-04-2006
*
* XDoclet definition:
*
* @struts.action validate="true"
* @author 侯彰明
*/
public class PublicPage {
int currentPage = 0; // 当前页
int totalPages = 0; // 总页数
int pageStartRow = 0;// 每页的起始数
int endPages = 10;// 结束页数
boolean hasNextPage = false; // 是否有下一页
boolean hasPreviousPage = false; // 是否有前一页
int totalRows = 0; // 总数据数
public int getEndPages() {
return endPages;
}
public void setEndPages(int endPages) {
this.endPages = endPages;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public int getPageStartRow() {
return pageStartRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public PublicPage(int count) {
totalRows = count;
if ((totalRows % 10) == 0) {
totalPages = totalRows / 10;
if(totalRows==0){
endPages=0;
}else{
endPages = currentPage + 10;
}
} else {
totalPages = totalRows / 10 + 1;
endPages = totalPages%10;
if ((currentPage + 10) >= totalPages) {
endPages = totalPages%10;
hasNextPage = false;
} else {
endPages = 10;
}
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
if (totalRows <= 10) {
endPages = totalPages;
hasNextPage = false;
}
}
public void getNextPage() {
currentPage = this.getCurrentPage();
if (currentPage > 0 && currentPage < totalPages) {
hasPreviousPage = true;
pageStartRow = currentPage * 10;
} else {
hasPreviousPage = false;
}
if (currentPage + 10 >= totalPages) {
endPages = totalPages%10;
hasNextPage = false;
hasPreviousPage = true;
pageStartRow = currentPage * 10 ;
} else {
hasNextPage = true;
}
}
public void getPreviousPage() {
currentPage = this.getCurrentPage();
if ((currentPage) < 1) {
hasPreviousPage = false;
} else {
hasPreviousPage = true;
}
if ((currentPage) == 0) {
hasPreviousPage = false;
pageStartRow = currentPage * 10;
} else {
hasPreviousPage = true;
}
if ((currentPage) > 0) {
hasPreviousPage = true;
pageStartRow = currentPage * 10;
} else {
hasPreviousPage = false;
}
}
public void getCurrent() {
if ((currentPage + 10 >= totalPages)||(totalPages<=10)) {
endPages = totalPages;
hasNextPage = false;
}
}
}