public class SplitPager {
private final int PAGESIZE=4;//页面的大小
private int currentPage=1;//首页
private Object[][]pageList;//要分布的记录

//设置分页的集合
public void setPageList(Object[][] pageList) {
this.pageList = pageList;
}
//根据用户的操作改变当前页的记录
//how 表示 上一页 、下一页…
public void setCurrentPage(int how) {
switch (how) {
case 1://表示首页
this.currentPage=1;
break;
case 2://表示上页
//如果不是第一页,则减少一页
if(this.currentPage>1){
this.currentPage--;
}
break;
case 3://表示下一页
if(this.currentPage<this.getPageCount()){
this.currentPage++;
}
break;
case 4://表首页
this.currentPage=this.getPageCount();
break;
}
}

//得要显示的数据的信息集合
public List<Object[]> getCurrentPageList(){
int start=(this.currentPage-1)*this.PAGESIZE;
int end=start+this.PAGESIZE;
if(end>this.pageList.length){
end=this.pageList.length;
}
//构建一个List的列表
List<Object[]> saveList=new ArrayList<Object[]>();
for (int i = 0; i < end; i++) {
saveList.add(this.pageList[i]);
}
return saveList;
}

private int getPageCount() {
int size=this.pageList.length;
return size%this.PAGESIZE==0?size/this.PAGESIZE:this.PAGESIZE+1;
}
//得到当前页数
public int getCurrentPage() {
return currentPage;
}
public Object[][] getPageList() {
return pageList;
}
}这是写好的一个javaBean,要实现分页功能。我刚刚学jsp,不知道怎么使用jsp结合servlet查询mysql中的数据实现分页,请高人,给完善(指点)下,谢谢!
求教jsp分页

解决方案 »

  1.   

    分页类不是已经写好了吗。 把分页查询出的结果保存到你写的个这javaBean里面  然后把他保存到request里面到页面去用就可以了。
      

  2.   


    就是不知道怎么 分页查询出的结果保存到你写的个这javaBean里面 ………………能举例说明么?
      

  3.   

    在servlet中调用javabean中的方法,也就是获取该页的查询结果如request.setAttribute("pagelist",这里写调用的结果集(list));
    然后在页面中List list = (List)request.getAttribute("pagelist");
    就可以获取该页的的查询结果,然后遍历list获取内容,
      

  4.   

    public Pagination<T> selectPagination(String sql, Object[] obj,
    int currentPage, int pageSize) {
    // TODO Auto-generated method stub                //分页查询前面
    StringBuffer buf=new StringBuffer("select * from ("); //传进来的需要查询的
    buf.append(sql);
                    //查的是多少条数据,分页后部分 
    buf.append(") where rid between ? and ? ");
    //根据第几页和每页数据量算出
                    int start=(currentPage-1)*pageSize+1;
    int end=currentPage*pageSize;

    List params=new ArrayList();
    if(!(obj==null||obj.equals(null))){
             for(int i=0;i<obj.length;i++){
              params.add(obj[i]);
             }
             } params.add(start);
    params.add(end);



    List<T> list=this.select(buf.toString(), params.toArray());

    //创建分页对象,将查询的list 和一些要保存参数保存到分页对象
    Pagination<T> pagination=new Pagination<T>();
    pagination.setList(list);
    pagination.setCurrentPage(currentPage);
    pagination.setPageSize(pageSize);


    int index=sql.indexOf("from");
        String tmp=sql.substring(index);
    int rowCount=this.getRowCount("select count(*) "+tmp, obj);

    pagination.setRowCount(rowCount);

        return pagination;
    }这是我在原来代码里找到的。 
    pagination 和你的SplitPager差不多 都是用来保存分页的数据。
    这样保存好之后。 在action或者用的是servlet的dopost里用把分页对象保存到request或其他那里。 到页面就用EL表达式用就可以了啊。
      

  5.   


    EL表达式下一章会学习。希望到时候 能用上,现在刚刚学习到基本javaBean的使用,有可能的话,拿我提供的javaBean写一个例子,帮忙提高下,谢谢!
      

  6.   

    - -建议直接用el表达式。 javaBean我没怎么用过。
    ${保存在request的对象名.对象拥有的属性}  EL表达式就是这么简单。。