jsp怎样实现分页?请高手提示。

解决方案 »

  1.   

    1、oracle里有rownum,sqlsever有top2、可以通过记录游标的移动来取得。3、可以通过循环,如:// 参数i是当前的页数 j 是每页的记录条数
        private int getResult(ResultSet resultset, int i, int j)throws Exception 
        { 
                Object   obj    =   null; 
                Object   obj1   =   null; 
                enumer   =   null;      //用来保存数据,里面全是一个一个字符串数组封装的记录
                rowStr   =   null;      //没有用到过可删除
                vctr.clear(); 
                hshtbl.clear(); 
                rsColNum  =  0; 
                rsRowNum  =  0; 
                rsTotalRowNum  =  0; 
                if(resultset  ==  null) 
                        return  -1; 
                ResultSetMetaData   resultsetmetadata; 
                resultsetmetadata  = resultset.getMetaData(); 
                if(resultsetmetadata  ==  null) 
                        return  -1; 
                try 
                { 
                        rsColNum  =  resultsetmetadata.getColumnCount();  //返回ResultSet中的列数
                        for(int k = 1; k <= (i - 1) * j && resultset.next(); k++) //让游标定位到第i页第一条数据之前
                                rsTotalRowNum++;  //统计跨越了多少条记录
                        for(int l = 0; l < j && resultset.next(); l++) //只要数据足够,就取j条数据
                        { 
                                String as[] = new String[rsColNum + 1]; //每一个字符串数据就封装了一条记录,索引从1....rsColNum
                                for(int j1 = 1; j1 <= rsColNum; j1++) //取出当前行的每一列数据 
                                                                        //并保存到String数组中.
                                { 
                                    as[j1] = resultset.getString(j1);  
                                    if(as[j1] == null)               //注意null情况
                                        as[j1] = new String(" ");  //为空就保存为空串
                                } 
                                vctr.add(as);     //添加到Vector中去.
                                rsRowNum++;       //每完成一行数据的装载就使当前标识行的数量加1
                                rsTotalRowNum++;  //同时总行数也加1
                        }                     while(resultset.next()) //所有记录条数统计完成
                                rsTotalRowNum++;  //统计剩余的记录条数,完善总行数
                        enumer = vctr.elements(); //把数据放到枚举里
                        String   as1[] = new String[rsColNum + 1];  //从1开始方便存取
                        for(int i1 = 1; i1 <= rsColNum; i1++) 
                        {        //把所有的列名都保存在一个HashTable,大写形式.
                                as1[i1] = resultsetmetadata.getColumnName(i1).toUpperCase(); 
                                hshtbl.put(as1[i1], new Integer(i1)); 
                        } 
                        return  0; 
                } 
                catch(Exception exception) 
                { 
                    enumer  = null; 
                } 
                return  -1; 
        } 
      

  2.   

    可以在dao层进行分页,或写一个分页bean,将分页算法全部写在该bean内,jsp只需每次分页调用该bean。