各位前辈、求一套经典的java分页查询代码,不基于任何框架的,送上积分10、如够经典,另有积分送上,谢谢.
1个回答
展开全部
Pager类:
package bit.dlde.marx.util;
import java.math.*;
public class NewPager {
private int totalRows; //总行数
private int pageSize = 10; //每页显示的行数
private int currentPage; //当前页号
private int totalPages; //总页数
private int startRow; //当前页在数据库中的起始行
public NewPager() {
}
/**默认每页10个
* @param _totalRows
*/
public NewPager(int _totalRows) {
totalRows = _totalRows;
totalPages=totalRows/pageSize;
// System.out.println("总共的页数:"+totalPages);
int mod=totalRows%pageSize;
if(mod>0){
totalPages++;
}
currentPage = 1;
startRow = 0;
}
/**可自定义每页显示多少数
* @param _totalRows
* @param _pageSize
*/
public NewPager(int _totalRows, int _pageSize) {
totalRows = _totalRows;
pageSize = _pageSize;
totalPages = totalRows / pageSize;
// System.out.println("总共的页数:"+totalPages);
int mod = totalRows % pageSize;
if (mod > 0) {
totalPages++;
}
currentPage = 1;
startRow = 0;
}
public void first() {
currentPage = 1;
startRow = 0;
}
public void previous() {
if (currentPage == 1) {
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
public void next() {
if (currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
public void refresh(int _currentPage) {
currentPage = _currentPage;
if (currentPage > totalPages) {
last();
}
}
public int getStartRow() {
return startRow;
}
public int getTotalPages() {
return totalPages;
}
public int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRows() {
return totalRows;
}
}
PageService 类:
package bit.dlde.marx.util;
public class NewPagerService {
/**
* 功能描述:使用默认参数的
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {
// 定义pager对象,用于传到页面
NewPager pager = new NewPager(totalRows);
// System.out.println("执行到getPager了");
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
// System.out.println("确认完当前的currentPage");
}else{
// currentPage="1";
pager.refresh(1);
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
// System.out.println("当前要执行的页面动作为:"+pagerMethod);
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
}
}else{
pager.first();
}
return pager;
}
/**
* 功能描述:可自定义每页显示书目的
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {
// 定义pager对象,用于传到页面
NewPager pager = new NewPager(totalRows,pageSize);
// System.out.println("执行到getPager了");
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
// System.out.println("确认完当前的currentPage");
}else{
// currentPage="1";
pager.refresh(1);
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
// System.out.println("当前要执行的页面动作为:"+pagerMethod);
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
}
}else{
pager.first();
}
return pager;
}
}
调用示例:
/**
* 功能描述:前台列表
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public String ExpListForFront() throws Exception {
int totalRow = expServ.getTotalRowsNum();
System.out.println(totalRow+" :totalRow");
pager = pagerService.getPager(this.getCurrentPage(), this
.getPagerMethod(), totalRow,36);//前台页面一页36个
this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
this.setTotalRows(String.valueOf(totalRow));
availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());
System.out.println("准备显示专家列表");
List<Experts> explistemp = new ArrayList<Experts>();
for (Experts es : availableItems) {
es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));
es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));
es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));
es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));
es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));
explistemp.add(es);
}
this.setItEx(explistemp.iterator());
System.out.println("显示专家列表完毕");
return SUCCESS;
}
页面上设置:
<div id="pageflip">
共
<s:property value="totalRows" />
行 第
<s:property value="currentPage" />
页 共
<s:property value="pager.getTotalPages()" />
页
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'first'"/>
</s:url>">首页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'previous'"/>
</s:url>">上一页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'next'"/>
</s:url>">下一页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'last'"/>
</s:url>">尾页</a>
</div>
package bit.dlde.marx.util;
import java.math.*;
public class NewPager {
private int totalRows; //总行数
private int pageSize = 10; //每页显示的行数
private int currentPage; //当前页号
private int totalPages; //总页数
private int startRow; //当前页在数据库中的起始行
public NewPager() {
}
/**默认每页10个
* @param _totalRows
*/
public NewPager(int _totalRows) {
totalRows = _totalRows;
totalPages=totalRows/pageSize;
// System.out.println("总共的页数:"+totalPages);
int mod=totalRows%pageSize;
if(mod>0){
totalPages++;
}
currentPage = 1;
startRow = 0;
}
/**可自定义每页显示多少数
* @param _totalRows
* @param _pageSize
*/
public NewPager(int _totalRows, int _pageSize) {
totalRows = _totalRows;
pageSize = _pageSize;
totalPages = totalRows / pageSize;
// System.out.println("总共的页数:"+totalPages);
int mod = totalRows % pageSize;
if (mod > 0) {
totalPages++;
}
currentPage = 1;
startRow = 0;
}
public void first() {
currentPage = 1;
startRow = 0;
}
public void previous() {
if (currentPage == 1) {
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
public void next() {
if (currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
public void refresh(int _currentPage) {
currentPage = _currentPage;
if (currentPage > totalPages) {
last();
}
}
public int getStartRow() {
return startRow;
}
public int getTotalPages() {
return totalPages;
}
public int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRows() {
return totalRows;
}
}
PageService 类:
package bit.dlde.marx.util;
public class NewPagerService {
/**
* 功能描述:使用默认参数的
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {
// 定义pager对象,用于传到页面
NewPager pager = new NewPager(totalRows);
// System.out.println("执行到getPager了");
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
// System.out.println("确认完当前的currentPage");
}else{
// currentPage="1";
pager.refresh(1);
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
// System.out.println("当前要执行的页面动作为:"+pagerMethod);
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
}
}else{
pager.first();
}
return pager;
}
/**
* 功能描述:可自定义每页显示书目的
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {
// 定义pager对象,用于传到页面
NewPager pager = new NewPager(totalRows,pageSize);
// System.out.println("执行到getPager了");
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
// System.out.println("确认完当前的currentPage");
}else{
// currentPage="1";
pager.refresh(1);
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
// System.out.println("当前要执行的页面动作为:"+pagerMethod);
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
}
}else{
pager.first();
}
return pager;
}
}
调用示例:
/**
* 功能描述:前台列表
* <br>输入:
* <br>输出:
* <br>创建日期:Nov 6, 2008
*/
public String ExpListForFront() throws Exception {
int totalRow = expServ.getTotalRowsNum();
System.out.println(totalRow+" :totalRow");
pager = pagerService.getPager(this.getCurrentPage(), this
.getPagerMethod(), totalRow,36);//前台页面一页36个
this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
this.setTotalRows(String.valueOf(totalRow));
availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());
System.out.println("准备显示专家列表");
List<Experts> explistemp = new ArrayList<Experts>();
for (Experts es : availableItems) {
es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));
es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));
es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));
es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));
es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));
explistemp.add(es);
}
this.setItEx(explistemp.iterator());
System.out.println("显示专家列表完毕");
return SUCCESS;
}
页面上设置:
<div id="pageflip">
共
<s:property value="totalRows" />
行 第
<s:property value="currentPage" />
页 共
<s:property value="pager.getTotalPages()" />
页
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'first'"/>
</s:url>">首页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'previous'"/>
</s:url>">上一页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'next'"/>
</s:url>">下一页</a>
<a
href="<s:url value="expListForFront.action">
<s:param name="currentPage" value="currentPage"/>
<s:param name="pagerMethod" value="'last'"/>
</s:url>">尾页</a>
</div>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询