Pages.java:   
  package   com.myproject.db;   
  import   java.sql.*;   
  public   abstract   class   Pages   {   
      String   filename   =   "";   //Jsp文件名   
      int   pages   =   1;   //页号   
      int   totals   =   0;   //记录总数   
      int   perpagenum   =   20;   //每页显示记录数   
      int   style   =   0;   //分页字符串样式   
      int   allpage   =   1;   //总页数   
      int   cpage   =   1;   //当前页   
      int   spage   =   1;   //开始记录数   
      String   sSQL   =   "";   //SQL语句   
      String   listPageBreak   =   "";   //用于页面显示的html语句   
      String[]   pagesign   =   {   
              "",   "",   "",   "",   "",   "",   "",   ""};   //显示的字符列表(如:“首页”、“上一页”、“下一页”、“尾页”)   
      public   Pages()   {   
      }   
      public   String   getFileName()   {   
          return   this.filename;   
      }   
      public   void   setFileName(String   aFileName)   {   
          this.filename   =   aFileName;   
      }   
      public   int   getPages()   {   
          return   this.pages;   
      }   
      public   void   setPages(int   aPages)   {   
          this.pages   =   aPages;   
      }   
      public   int   getTotals()   {   
          return   this.totals;   
      }   
      public   void   setTotals(int   aTotals)   {   
          this.totals   =   aTotals;   
      }   
      public   int   getPerPageNum()   {   
          return   this.perpagenum;   
      }   
      public   void   setPerPageNum(int   aperpagenum)   {   
          this.perpagenum   =   aperpagenum;   
      }   
      public   int   getStyle()   {   
          return   this.style;   
      }   
      public   void   setStyle(int   aStyle)   {   
          this.style   =   aStyle;   
      }   
      public   void   setSQL(String   SQL)   {   
          this.sSQL   =   SQL;   
      }   
      public   void   setPagesign(String[]   apagesign)   {   
          this.pagesign   =   apagesign;   
      }   
      public   void   doPageBreak()   {   
          this.allpage   =   (int)   Math.ceil(   (this.totals   +   this.perpagenum   -   1)   /   
                                                                        this.perpagenum);   
          int   intPage   =   this.pages;   
          //如果输入的页号大于总页数     设置当前页为1,否则当前页设置为输入的页号   
          if   (intPage   >   this.allpage)   {   //   pages   ==   0   
              this.cpage   =   1;   
          }   
          else   {   
              this.cpage   =   intPage;   
          }   
          //开始记录数   
          this.spage   =   (this.cpage   -   1)   *   this.perpagenum;   
          getPageBreakStr();   
      }   
    
      //用于页面显示的html语句   
      public   String   getListPageBreak()   {   
          return   this.listPageBreak;   
      }   
    
      //得到要显示的字符列表(如:“首页”、“上一页”、“下一页”、“尾页”)   
      public   void   getPageBreakStr()   {   
          //style   ==   0时:显示如“上一页”、“下一页”(有链接)   
          if   (this.style   ==   0)   {   
              if   (this.cpage   >   1)   {   
                  this.listPageBreak   +=   "[<a   href='"   +   this.filename   +   "pages="   +   
                          (cpage   -   1)   +   
                          "'><font   color=#FF0000>"   +   
                          pagesign[1]   +   "</font></a>]";   
              }   
              if   (this.cpage   <   this.allpage)   {   
                  this.listPageBreak   +=   "[<a   href='"   +   this.filename   +   "pages="   +   
                          (cpage   +   1)   +   
                          "'   ><font   color=#FF0000>"   +   
                          pagesign[2]   +   "</font></a>]";   
              }   
          }   
          //style   ==   1时:显示带图片的“上一页”、“下一页”(有链接)   
          if   (this.style   ==   1)   {   
              if   (this.cpage   >   1)   {   
                  this.listPageBreak   +=   
                          "<img   src=images/prepage.gif     align=absmiddle><font   color=#FF0000>[<a   href='"   +   
                          this.filename   +   "pages="   +   
                          (cpage   -   1)   +   "'><font   color=#FF0000>"   +   
                          pagesign[1]   +   "</font></a>]</font>";   
              }   
              if   (this.cpage   <   this.allpage)   {   
                  this.listPageBreak   +=   
                          "<img   src=images/nextpage.gif     align=absmiddle><font   color=#FF0000>[<a   href='"   +   
                          this.filename   +   "pages="   +   
                          (cpage   +   1)   +   "'><font   color=#FF0000>"   +   
                          pagesign[2]   +   "</font></a>]</font>";   
              }   
          }   
          //style   ==   2时:显示如“首页”、“上一页”、“下一页”、“尾页”(有链接)   
          if   (this.style   ==   2)   {   
              if   (this.cpage   >   1)   {   
                  this.listPageBreak   +=   
                          "[<a   href='"   +   this.filename   +   
                          "pages=1'><font   color=#FF0000>"   +   
                          pagesign[0]   +   
                          "</font></a>]   [<a   href='"   +   this.filename   +   "pages="   +   (cpage   -   1)   +   
                          "'><font   color=#FF0000>"   +   
                          pagesign[1]   +   "</font></a>]";   
              }   
              if   (this.cpage   <   this.allpage)   {   
                  this.listPageBreak   +=   "[<a   href='"   +   this.filename   +   "pages="   +   
                          (cpage   +   1)   +   
                          "'><font   color=#FF0000>"   +   
                          pagesign[2]   +   
                          "</font></a>]   [<a   href='"   +   this.filename   +   "pages="   +   
                          this.allpage   +   
                          "'><font   color=#FF0000>"   +   
                          pagesign[3]   +   "</font></a>]";   
              }   
          }   
          //style   ==   3时:显示更多信息(有链接)   
    
      }   
    
  //得到一个sql字符串   
      public   abstract   String   getSQLString(String   pk);   
    
  //获得记录集   
      public   abstract   ResultSet   getRs(TranContext   DBSQL,   String   pk);   
  }   
    

解决方案 »

  1.   

    什么数据库,mysql简单些,mssql稍微复杂了
      

  2.   

    mysql数据库的分页:   
      MySQLPages.java:   
        
      package   com.myproject.db;   
      import   java.sql.ResultSet;   
      import   org.apache.log4j.*;   
      public   class   MySQLPages   
              extends   Pages   {   
          static   Logger   logger   =   Logger.getLogger(MySQLPages.class.getName());   
          public   MySQLPages()   {   
          }   
          /**   
            *   重写父类的方法获得记录集   
            *   @param   DBSQL   
            *   @param   pk   
            *   @return   
            */   
          public   ResultSet   getRs(TranContext   DBSQL,   String   pk)   {   
              String   SQL   =   "";   
              ResultSet   rs   =   null;   
              try   {   
                  SQL   =   this.getSQLString(pk);   
                  //logger.info(SQL);   
                  DBSQL.prepareStatement(SQL);   
                  rs   =   DBSQL.executeQuery();   
                  return   rs;   
              }   
              catch   (Exception   e)   {   
                  logger.error(e);   
                  return   null;   
              }   
          }   
        
          /**   
            *   重写父类的方法得到一个sql字符串   
            *   @param   pk   
            *   @return   
            */   
          public   String   getSQLString(String   pk)   {   
              String   sql   =   this.sSQL;   
              //spage开始的记录数     perpagenum每页显示的记录数     该语句显示从spage开始的perpagenum条纪录   
              sql   =   sql   +   "   limit   "   +   spage   +   ","   +   perpagenum;   
              return   sql;   
          }   
      } ==========================================
    转的高手贴,希望有帮助
    其实分页无非两种思路
    1 数据库分页,用select limit语句,你每次提交一个参数,让数据库给你想要的数据
    2页面分页,将数据全部检索出来,然后放到ArrayList或这是vector中,用<logic;itrator>循环显示,你可以参照上面的类,或者自己在ActionForm中设置一个pagenum属性,用<logic:equal name="form",property="pagenum" value="xx">来判断输出那一页的数据
      

  3.   

    http://dev.csdn.net/Develop/article/28/59210.shtm
    http://www.mx68.com/WebDeveloper/2006-03-10/WebDeveloper_42309.shtml