写个BEAN,直接搞定
package sei;import java.sql.*;
//import java.util.*;public class PageResultSet {   // private Collection data = null;//分页数据
    private int curPage=1;//当前页
    private int pageSize=15;//每页显示的记录数
    private long rowsCount=0;//记录行数
    private int pageCount=1;//页数
    private String SQL="";//查询条件    public String getSQL() {
        return SQL;
    }
    
    //getCurPage:返回当前的页数
    public int getCurPage() {
        return curPage;
    }    //getPageSize:返回分页大小
    public int getPageSize() {
        return pageSize;
    }    //getRowsCount:返回总记录行数
    public long getRowsCount() {
        return rowsCount;
    }    //getPageCount:返回总页数
    public int getPageCount() {
        return pageCount;
    }
    
    //第一页
    public int first() {
        return 1;
    }    //最后一页
    public int last() {
        return pageCount;
    }    //上一页
    public int previous() {
        return (curPage - 1 < 1) ? 1 : curPage - 1;
    }
    
    //下一页
    public int next() {
        return (curPage + 1 > pageCount) ? pageCount : curPage + 1;
    }    //第一页
    public boolean isFirst() {
        return (curPage==1)?true:false;
    }    //最后一页
    public boolean isLast() {
        return (curPage==pageCount)?true:false;
    }    //获取当前页数据
    //SelectFileds:选择要显示的字段 *
    //IdFiled:要进行排序的字段
    //SQL:查询条件 如:(User='11')
    //IsWhere:SQL语句中如果有Where条件那么该值为"",否则为"Where"
    //CurPage:要显示的当前页
    public ResultSet getData(String SelectFileds,String IdFiled,String Table, String sql,int CurPage) {
        
        if (SelectFileds.equals("")||SelectFileds==null)SelectFileds="*";
        if(IdFiled==null||IdFiled.equals(""))return null;        
        String IsWhere="";
        if (sql==null) sql="";
        if(sql.equals("")){IsWhere="Where";this.SQL="";sql="";}else{ IsWhere="And";this.SQL=sql;sql="Where "+sql;}
        
        if (CurPage==0) CurPage=1;
        this.curPage=CurPage;
        
        ResultSet rs;
        SqlBean db = new SqlBean();  
        try {
            rs = db.executeQuery("select count(*) as A FROM "+Table+" "+sql);
            if (rs.next()) rowsCount=rs.getInt("A");  
            
            //this.SQL="select top "+pageSize+" "+SelectFileds+" FROM "+Table+" "+sql+" "+IsWhere+" "+IdFiled+" Not In (Select Top "+((curPage-1)*pageSize)+" "+IdFiled+" "+Table+" "+sql+" order by "+IdFiled+" ASC) order by "+IdFiled+" ASC";
            
            pageCount = (int)Math.ceil((rowsCount + pageSize-1) / pageSize);
            rs=db.executeQuery("select top "+pageSize+" "+SelectFileds+" FROM "+Table+" "+sql+" "+IsWhere+" "+IdFiled+" Not In (Select Top "+((curPage-1)*pageSize)+" "+IdFiled+" FROM "+Table+" "+sql+" order by "+IdFiled+" ASC) order by "+IdFiled+" ASC");
           
            
       } catch (Exception e) {rs=null;}        
        return rs;
    }    /**
     * 获取工具条
     * @return String
     */
    public String getToolBar(String fileName){
        String temp="";
        if(fileName.indexOf("?")==-1){temp="?";}else{ temp="&";}
        
        String str="<table border=0 width=550 align=center><form method='post' name='frmPage' action='"+fileName+"'>";
        str=str+"<tr align=center valign=middle>";
        str=str+"<td>【每页"+pageSize+"条记录】</td>";
        str=str+"<td>【共"+pageCount+"页/"+rowsCount+"条记录】</td>";
        
        if(curPage<=1)
        {
            str=str+"<td>【首页】</a></td>";
            str=str+"<td>【上一页】</td>";            
        }else{
            str=str+"<td><a href=\""+fileName+temp+"cur_page=1&SQL="+SQL+"\">【首页】</a></td>";
            str=str+"<td><a href=\""+fileName+temp+"cur_page="+(curPage-1)+"&SQL="+SQL+"\">【上一页】</a></td>";
        }
        if (curPage<pageCount)
        {
            str=str+"<td><a href=\""+fileName+temp+"cur_page="+(curPage+1)+"&SQL="+this.SQL+"\">【下一页】</a></td>";
            str=str+"<td><a href=\""+fileName+temp+"cur_page="+pageCount+"&SQL="+SQL+"\">【尾页】</a></td>";            
        }else{
            str=str+"<td>【下一页】</td>";
            str=str+"<td>【尾页】</td>";                
        }
         str+="<td>转到<select name='page' onChange='GoPage()'>";
        for(int i=1;i<=pageCount;i++)
        {
            if(i==curPage)
                str+="<option value='"+i+"' selected>第"+i+"页</option>";
            else
                str+="<option value='"+i+"'>第"+i+"页</option>";
        }
        str+="</select></td>";
       // str+="<td>转到<INPUT type='submit' VALUE=' GO ' CLASS='button' onmouseover='MOX()' onmouseout='MUX()' onClick=\"location='"+fileName+temp+"cur_page='+\" </td>">
        str+="</tr></form></table>";        str+="<SCRIPT Language = javascript>";
        str+="function GoPage(){window.location=\""+fileName+temp+"cur_page=\"+document.frmPage.page.options[document.frmPage.page.selectedIndex].value+\"&SQL="+SQL+"\"}";
     str+="</SCRIPT>";
        return str;
    }
}

解决方案 »

  1.   

    建议用tag-lib(里面用循环),
    对应的属性里设置每页显示的条数。
      

  2.   

    不是说新出的jdk1.5里有个CachedSet能代替ResultSet吗?设置CachedSet的page大小,然后一页完了就用CachedSet.nextPage()
      

  3.   

    楼主如果数据量不大时,给你一个最简单的办法吧.
    while(rs.next()) {
       if(在页码范围内){
         out.println("<tr><td>"+rs.getString("id")+"</td><td>"+rs.getString("name")+"</td><td>"+rs.getString("home")+"</td></tr>");
       }else{
          break;
       }
    }