如题,Email:mwsssxu◎tom.com

解决方案 »

  1.   

    package com.beans.database;import java.sql.*;
    import javax.servlet.*;// 引入servlet包
    import javax.servlet.http.*;
    import java.math.*;/**
     **类别:数据库分页类
     **作者:晨雨
     **时间:2005-05-20
     **/public class  Page{
       public int curPages;// 当前的页码值
       public int pageRows; // 设置每页显示的记录数
       private int totalRows;// 总记录数
       private int totalPages;// 总页数
       private String strPage="page";// 定义WEB的页码参数,默认为page/*
    *取得页面参数page的值
    */
       public void setPages(HttpServletRequest request, String page){
         strPage=page;     String strPage = null;// page参数变量
         try{
           strPage = request.getParameter(page);// request对象取得page的值
          }catch(Exception e){
               //System.out.println("delcolumn"+e.getMessage());
               e.printStackTrace();
          }
          //初始化page
          try{
               if(strPage == null){// 默认没有就设置是第一页
                   curPages = 1;
               }else{
                   curPages = Integer.parseInt(strPage);// 取得strPage的整数值
                   if(curPages < 1)// 如果小于1,同样返回是第一页
                       curPages = 1;
               }
           }catch(Exception e){
               //System.out.print("curPages");
               e.printStackTrace();
           }
       }/*
    *设置每页要显示的记录条数
    */
       public void setPageRows(int rows){
           pageRows=rows;
       }/*
    *计算总页数的函数,在setTotalRowsPages中调用
    */
       public int getTotalPages(int rowcounts){
         int Pages;  //总页数
         if((rowcounts%pageRows)==0)// 取得余数
            Pages = rowcounts/pageRows;// 每页显示的整数
         else
            Pages=rowcounts/pageRows+1;// 不是的话就加一
         return Pages;// 返回页数
       }/*
    *计算总记录数和总页数
    */
       public void getTotalRowsPages(String strSQL,Connection conn) throws Exception{
         Statement stmt = null;
         try{
           stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
           ResultSet rs_count=stmt.executeQuery(strSQL);
           rs_count.last();
           totalRows=rs_count.getRow(); //取得总的数据数
           totalPages=getTotalPages(totalRows); //取出总页数
           rs_count.close();
           rs_count=null;
         }catch (SQLException ex) {
           ex.printStackTrace();
         }finally {
           try {
             if (stmt != null){
                stmt.close();
                stmt = null;
             }
           } catch (SQLException ex1) {
              ex1.printStackTrace();
           }
         }
       }   //public void setPagesTen(int curPages){
         //Math.round();  //四舍五入
         //Math.floor();  //向低取整
         //Math.ceil();   //向高取整
       //}/*
    *返回当前页的结果集的数组,参数(sql语句,得到当前页的记录集)
    */
       public String[][] getArrData(String strSQL,Connection conn) throws Exception{
         String[][] strArrData=null;//数据体数组     int rsCount;
         rsCount=(curPages-1)*pageRows;     String sql=null;
         //sql=strSQL+" limit "+rsCount+","+pageRows; //mysql数据库条件方式
         sql="select * from ("+strSQL+") where rownum<="+(rsCount+pageRows);
         sql=sql+" minus select * from ("+strSQL+") where rownum<="+rsCount; //oracle数据库条件方式     Statement stmt = null;
         try{
           stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
           ResultSet rs=stmt.executeQuery(sql);
           int cols=rs.getMetaData().getColumnCount();
           rs.last();
           strArrData=new String[rs.getRow()][cols];
           rs.beforeFirst();
           int i=0;
           while(rs.next()){
             for(int j=0;j<cols;j++){
               strArrData[i][j]=(rs.getString(j+1)==null?"":rs.getString(j+1));
             }
             i++;
           }
           rs.close();
           rs=null;
         } catch(SQLException ex){
           ex.printStackTrace();
         }finally {
            try {
                if (stmt != null) {
                    stmt.close();
                    stmt = null;
                }
            } catch (SQLException ex1) {
                ex1.printStackTrace();
            }
        }
        return strArrData;
       }/*
    *输出页码表格,参数(除page外的其他参数,显示样式)
    */
       public String getPageHtml(String strParam,String style){
         StringBuffer pageHtml=new StringBuffer("\n");     pageHtml.append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#CCCCCC\">")
             .append("<tr><td class="+style+"><div align=\"right\">");     int startTen;//当前10页起始数
         if((curPages%10)==0)
           startTen=(curPages/10)-1;
         else
           startTen=curPages/10;     pageHtml.append("当前:"+curPages+"/"+totalPages+"页 "+pageRows+"条/页 共"+totalRows+"条 &nbsp;&nbsp;");     if(curPages==1){
           pageHtml.append("");
         }else if(curPages>10){
             pageHtml.append("<a href='?"+strPage+"=1"+strParam+"' title='首页'><font face=webdings>9</font></a> <a href='?"+strPage+"="+((startTen-1)*10+10)+strParam+"' title='上十页'><font face=webdings>7</font></a> ");
         }else{
             pageHtml.append("<a href='?"+strPage+"=1"+strParam+"' title='首页'><font face=webdings>9</font></a> ");
         }
         //---------------------------
         for(int i=(startTen*10+1);i<=(startTen*10+10);i++){
           if(i<=totalPages){
             if(i==curPages)
               pageHtml.append("<font color='#FF0000'>"+i+"</font>"+"&nbsp;");
             else
               pageHtml.append("<a href='?"+strPage+"="+i+strParam+"'>"+i+"</a> ");
           }
         }
         //----------------------------
         if(curPages>=totalPages){
           pageHtml.append("");
         }else if(curPages/pageRows==totalPages/pageRows && curPages%pageRows!=0){
           pageHtml.append("<a href='?"+strPage+"="+totalPages+strParam+"' title='尾页'><font face=webdings>:</font></a> ");
         }else{
           pageHtml.append("<a href='?"+strPage+"="+((startTen+1)*10+1)+strParam+"' title='下十页'><font face=webdings>8</font></a> <a href='?"+strPage+"="+totalPages+strParam+"' title='尾页'><font face=webdings>:</font></a> ");
         }     pageHtml.append("<script language='JavaScript'>")
             .append("function pageGo(){")
             .append("var pageid=window.document.all('pagenum').value;")
             .append("var checknum=/^\\d+$/g;")
             .append("if(!checknum.test(pageid)){")
             .append("alert('输入页码只能为正整数!');")
             .append("pageid='1';")
             .append("}else if(pageid<1 || pageid>"+totalPages+"){")
             .append("alert('输入页码超出页码范围!');")
             .append("}else if(pageid=="+curPages+"){")
             .append("alert('输入页码就是当前显示页码!');")
             .append("}else{")
             .append("window.location='?"+strPage+"='+pageid+'"+strParam+"';")
             .append("}")
             .append("}")
             .append("</script>");     pageHtml.append("<input name='pagenum' id='pagenum' type='text' value='"+curPages+"' size='3'><input type='button' name='cmdpage' value='GO' onClick='javascript:pageGo();'>");
         pageHtml.append("</div></td></tr>");
         pageHtml.append("</table>");     return pageHtml.toString();
         }
    }
      

  2.   

    我从我的 %Resin_Home%\lib 下面找到了包含 javax.servlet 的 jsdk-24.jar 文件.
    不知道是不是用它.wzrain(晨雨) 好样的. 顶!!!!
      

  3.   

    import java.sql.*;
    import news.sql_data;
    public class page {
    ResultSet CountTopicrs = null; //初始化总记录数Rs变量
    ResultSet Pagirs = null; //初始化分页时每页的记录集数Rs变量
    public static void main(String[] args) {
    }
    private int intCountTopic = 0; //主题总数,即select选出的、库中所有记录总数
    public int intPageSize; //每页显示主题数,即每页显示的记录总数
    public int intPageCount; //总页数
    public int intPage = 0; //当前页数
    private String Countsql = null,
    Pagisql = null,
    str = null,
    str_where = null;
    private String str_parameter = "";
    //public static int pages_n=1; //传分页参数值 private String nowPage; //初始化当前页intPage变量,以准确便获取当前页,即获取当前页的具体页号。
    private String HttpFile; //当前的地址栏的文件,即具体jsp文件。 sql_data db = new sql_data(); //连接数据库 //接收传分页参数
    public void setPages(int n) {
    intPageSize = n;
    } public String getPagisql() {
    return Pagisql;
    } /*功能:接收参数组织SQL语句
     *str_table :分页显示的表名
     *str_where:分页的where条件
     *httpfile :具体jsp文件
     *pages :获取地址栏传过来的pages参数
     */
    public ResultSet setQuerysql(
    String str_table,
    String str_where,
    String httpfile,
    String pages)
    throws SQLException {
    ResultSet r = null;
    this.nowPage = pages;
    this.HttpFile = httpfile; //分页文件名 Countsql = "select count(*) from " + str_table + " " + str_where;
    Pagisql =
    "select * from "
    + str_table
    + " "
    + str_where
    + " order by id desc";
    try {
    r = querySql(Countsql, Pagisql);
    } catch (SQLException _ex) {
    System.out.println(_ex);
    }
    return r;
    } /*功能:接收参数进行首尾页判断
     *Countsql:总记录的Query字符串。[形式为select count(*) from tablename]
     *Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]
     *request :参数传递过程中的变量。[用来控制翻页时的pages变量]
     */
    public ResultSet querySql(
    String Countsql,
    String Pagisql) //,HttpServletRequest request
    throws SQLException {
    //获取当前文件名。
    //HttpFile=request.getRequestURI();
    //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]
    //nowPage=request.getParameter("pages");//由参数HttpServletRequest request传递而来 if (nowPage == null) {
    intPage = 1;
    } else {
    intPage = Integer.parseInt(nowPage);
    if (intPage < 1)
    intPage = 1;
    } //end else //获取总记录数的结果集。
    CountTopicrs = db.executeQuery(Countsql);
    if (CountTopicrs.next()) {
    intCountTopic = CountTopicrs.getInt(1); //获取第一个字段的整型
    }
    //获取总页数。
    intPageCount = (intCountTopic + intPageSize - 1) / intPageSize;
    //如果当前页大于总页数,则当前页等于总页数。//=最后一页
    if (intPage > intPageCount) {
    intPage = intPageCount;
    }
    //关闭总主题数的数据集。
    CountTopicrs.close(); //获取执行分页的结果集。
    Pagirs = db.executeQuery(Pagisql);
    return Pagirs;
    } //end querySql function. //获取记录总数。
    public int getCountTopic() {
    return intCountTopic;
    } //获取总页数。
    public int getPageCount() {
    return intPageCount;
    } //获取当前页数。
    public int getIntPage() {
    return intPage;
    } //获取当前页的数据。boodata为True,表示要加入该数据到当前页。
    //这里可能会在JSP调用时影响速度[因为调用时要多一层循环],因此放到JSP中嵌入,待改进。
    //该代码暂时保留。
    // public boolean getData(){
    // boolean boodata=false;
    // if (intPageCount>0)
    // {
    // try
    // {
    // while (Pagirs.next())
    // {
    // i++;
    /// if (i>((intPage-1)*intPageSize) &&(i<=intPage*intPageSize))
    // {
    // boodata=true;
    // }
    // } //endwhile.
    // }//end try.
    // catch(Exception e){
    // System.out.println(e.toString());
    // }
    // } //endif.
    // return boodata;
    // } //end getData(); //设置分页参数
    public void setPfoot(String str) {
    this.str_parameter += str;
    } //分页栏函数。
    public String PageFooter() {
    String str = "<form action=" + HttpFile + " name=form1 methord=post>";
    int next, prev;
    prev = intPage - 1;
    next = intPage + 1;
    str += "<font style='font-size: 9pt'>总计<font color='red'>"
    + getCountTopic()
    + "</font>条记录,"
    + "【共<font  color='red'>"
    + getPageCount()
    + "</font>页】";
    str += "【条"
    + intPageSize
    + "/页】 当前第<font color='red'>"
    + getIntPage()
    + "</font>页(列出第"
    + ((intPageSize * getIntPage() + 1) - intPageSize)
    + "到第"
    + (getIntPage() * intPageSize)
    + "条) &nbsp; &nbsp; ";
    //getIntPage()*intPageSize
    if (intPage > 1)
    str += " <A href="
    + HttpFile
    + "?pages=1"
    + str_parameter
    + ">第一页</A> ";
    else
    str += " 第一页 "; if (intPage > 1)
    str += " <A href="
    + HttpFile
    + "?pages="
    + prev
    + str_parameter
    + ">上一页</A> ";
    else
    str += " 上一页 "; if (intPage < intPageCount)
    str += " <A href="
    + HttpFile
    + "?pages="
    + next
    + str_parameter
    + ">下一页</A> ";
    else
    str += " 下一页 "; if (intPageCount > 1 && intPage != intPageCount)
    str += " <A href="
    + HttpFile
    + "?pages="
    + intPageCount
    + str_parameter
    + ">最后页</A>";
    else
    str += " 最后页 </font>";
    str
    += " 转到<INPUT TYPE='text'NAME='pages' size='2'>页  <input type='submit' name='Submit' value='go'></form>";
    return str;
    }
    //关闭数据库连接
    public void closeConn() {
    db.closeStmt();
    db.closeConn();
    }} //end.