站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题分页问题解决之道---共同学习共同进步

分页问题解决之道---共同学习共同进步

摘要: 分页问题的一种解决方法
在开发web程序中我们总会遇到数据需要分页显示的情况,因为数据太多不可能在一页内显示,很多初学者不知道分页问题怎么来解决。其实分页问题的解决方法有二:一是在web页面里进行分页处理,可是这种方法使得web页面看起来很乱,所以我在这只说一下第二种方法,就是用一个专门处理分面的java类来实现。
首先简单介绍一下这个用于分页处理的java类:

import java.io.Serializable;


public class PageCut implements Serializable {
protected int allNum;//所有记录条数
protected int perPageCount;//每页记录数
protected int allPage;//总的页数
protected int currentPage; 当前的页数

/**
* 获得当前的页数
* @return currentPage 当前的页数
*/
public int getCurrentPage() {
return currentPage;
}

/**
* 设置当前的页数
* @param currentPage 当前的页数
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

/**
* 获得所有记录数
* @return allNum 所有记录数
*/
public int getAllNum() {
return allNum;
}

/**
* 获得每页的记录条数
* @return perPageCount 每页的记录条数
*/
public int getPerPageCount() {
return perPageCount;
}

/**
* 设置每页的记录条数
* @param perPageCount 每页的记录条数
*/
protected void setPerPageCount(int perPageCount) {
this.perPageCount = perPageCount;
}

/**
* 获得总页数
* @return allPage 总页数
*/
public int getAllPage() {
if(allNum%perPageCount==0){
allPage=allNum / perPageCount ;
}
else{
allPage=allNum / perPageCount + 1;
}
return allPage;
}

/**
* 设置所有纪录数
* @param allNum 所有纪录数
*/
public void setAllNum(int allNum) {
this.allNum = allNum;
}

}


因为代码很简单而且有注释,应该不难理解所以就不多说了。
还要介绍一个类是操作数据库取得数据的类:

import test.Item;
import test.ItemDAO;
import java.util.*;

public class ItemPageCut extends PageCut{

/**
* 构造函数
*/
public ItemPageCut(){
setPerPageCount(10);
currentPage=1;
}


/**
* 获得item的具体记录

*/
public Item[] getRecords(){
Item[] item=null;
Collection col=ItemDAO.findByCondition(currentPage-1)*perPageCount+1,perPageCount);
Iterator it=col.iterator();
List list=new ArrayList();
while(it.hasNext()){
Item item=(Item)it.next();
list.add(item);
}
if(list.size()!=0){
items=new Item[list.size()];
for(int i=0;i items[i]=(Item)list.get(i);
}
}
else{
return null;
}
return items;
}

}

/**
* 计算所有的纪录
*/
public void resetNum(){
this.setAllNum(ItemDAO.getRowCount());
getAllPage();
}


}


最后是页面上的显示:

<%@ page import="Item" %>

<%
int pageCount=1;
//当前页面的参数
if(request.getParameter("pageCount")!=null){
pageCount=Integer.parseInt(request.getParameter("pageCount"));
}
//设置查询条件
itempage.setCurrentPage(pageCount);
Item[] item=itempage.getRecords();
itempage.resetNum(); //设置总数;

%>

<table border="0">
<tr>
<td>ID号</td>
<td>属性</td>
</tr>
<%if(item!=null){%>
<%for(int i=0;i <tr>
<td<%=item[i].getId()%></td>
}
}
%>
</tr>
</table>



首页
<%if(itempage.getCurrentPage()>1){%>
">上一页
<%}%>
<%if(itempage.getCurrentPage()下一页<%}%>
">尾页

共有 <%=item.getAllPage()%> 页 <%=item.getAllNum()%>条记录,现在是第 <%=item.getCurrentPage()%> 页



这里只是描述了一种解决分页问题的思想,里面的具体方法没做介绍,相信大家看完后对分页问题有一个理解.
↑返回目录
前一篇: 在Struts和Hibernate之间搭起桥梁
后一篇: 轻量级的关系/对象映射--Amber进阶