一位csdn网友发的贴『【再次公开源代码】上次我在此处公开了我的“三天没合眼,开发出的,汤母猫5数据库连接池 + JavaBean + 分页技术 + JDBC3.0 + 大型数据库』
求该文的源代码

解决方案 »

  1.   

    发个给我谢了
    [email protected]
      

  2.   

    给我一份,谢谢·
    [email protected]
      

  3.   

    给我一份,谢谢·
    [email protected]
      

  4.   

    给我一份,谢谢·
    [email protected]
      

  5.   

    3天没合眼,终于开发出“数据库连接池+JavaBean+JSP+SQL Server+JDBC3.0的数据库分页技术”,现公布全部开发代码,有不好之处请高手指点3天没合眼,
    终于开发出“数据库连接池+JavaBean+JSP+SQL Server+JDBC3.0的数据库分页技术”,
    现公布全部开发代码,有不好之处请高手指点。
    主要特色:
    1.使用最新的JDBC3.0数据库驱动。
    2.大幅度减化了JSP的反复调用JavaBean,可以直接写SQL,无须再使用连接数据库连接池。
    3.将大量的工作交给JavaBean做,JSP负责页面控制。
    4.最大特色是极其简单,程序编写也极其简单,非常适合初学者。
    5.使用的是"汤母猫"数据库连接池,方便快速。《page.jsp》*******************************************************************
    文件名《page.jsp》
    <%@ page language="java" import="java.sql.*, my.*" %>
    <%@ page contentType="text/html; charset=gb2312" %>
    <jsp:useBean id="pagi" scope="page" class="my.Pagi"/>
    <html>
    <body>
    <table  align="center" border=1> 
    <% 
    String CountQuery="select count(*) from 商品资料";  
    String query = "select * from 商品资料";  
    ResultSet rs = pagi.querySql(CountQuery,query, request);  
    String footer = pagi.PageFooter(); 
    %>
    <tr>
    <td >商品编号</font></td>
    <td >商品名称</font></td>
    </tr>
    <%
    if (pagi.intPageCount>0)  
    {  
    int i=0;  
    while (rs.next())  
    {  
    i++;  
    if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))  
    {  
    %>
    <tr>
    <td><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    </tr>
    <%
    }


    out.println("<tr><td colspan=2>"+footer+"</td></tr>");
    rs.close(); 
    pagi.close_all();
    %>
    </table>
    </body>
    </html>
    ****************************************文件名《pagi.java》*********************************************************文件名《pagi.java》
    package my;  import java.util.*;  
    import java.sql.*;  
    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;
    import my.DB.*;public class Pagi
    {  
    ResultSet CountTopicrs=null; //初始化总记录数Rs变量  
    ResultSet Pagirs=null; //初始化分页时Rs变量
    public int intCountTopic=0; //主题总数
    public int intPageSize;//每页显示主题数 
    public int intPageCount;//总页数 
    public int intPage=1; //当前页数 
    public String nowPage; // int i;
    public String HttpFile;//初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件
    DB db; //定义Linkdb类的一个对象。public Pagi()//定义构造器,初始化每页显示的主题数和数据库的连接。
    {
    intPageSize=4;  //每页显示的记录数目
    db = new DB(); 
    }//Countsql:总记录的Query字符串。[形式为select count(*) from tablename]  
    //Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]  
    //request :参数传递过程中的变量。[用来控制翻页时的pages变量]  
    public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception
    {
    HttpFile=request.getRequestURI();  //获取当前文件名。 
    nowPage=request.getParameter("pages");  //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数] 
    if (nowPage==null)

    intPage=1; 
    }
    else

    intPage=Integer.parseInt(nowPage); 
    if (intPage<1) 
    intPage=1; 
    }    CountTopicrs=db.executeQuery(Countsql); //@@@@@@@@@@@@获取总记录数的结果集。 if (CountTopicrs.next())  
    {
    intCountTopic=CountTopicrs.getInt(1);  
    }
    intPageCount = (intCountTopic+intPageSize-1)/intPageSize;  //获取总页数。if (intPage>intPageCount)//如果当前页大于总页数,则当前页等于总页数。 
    {
    intPage=intPageCount;  
    }  
    CountTopicrs.close();  //关闭总主题数的数据集。
            db.close_all();
    Pagirs=db.executeQuery(Pagisql);  //@@@@@@@@@@@@@@@获取执行分页的结果集。 
    return Pagirs;  
    }//end querySql function.    
    public int getCountTopic()//获取记录总数。
    {
    return intCountTopic;  
    }  
    public int getPageCount() //获取总页数。 
    {
    return intPageCount;  
    }
    public int getIntPage()  //获取当前页数。 
    {  
    return intPage;  
    }  public String PageFooter() 
    {  
    String str = "";  
    int next, prev;  
    prev=intPage-1;  
    next=intPage+1;  
    str += "查询到<font color=red>"+getCountTopic()+"</font>条记录"+
    "    共<font color=red>"+getPageCount()+"</font>页";  
    str +=" 第<font color=red>"+getIntPage()+"</font>页 ";  
    if(intPage>1) 
    str += " <A href=" + HttpFile + "?pages=1"+">首页</A> ";  
    else 
    str += " 首页 ";  
    if(intPage>1)
    str += " <A href=" + HttpFile + "?pages=" + prev + ">上一页</A> ";  
    else
    str += " 上一页 ";  
    if(intPage<intPageCount)  
    str += " <A href=" + HttpFile + "?pages=" + next + ">下一页</A> ";  
    else 
    str += " 下一页 ";  
    if(intPageCount>1&&intPage!=intPageCount)  
    str += " <A href=" + HttpFile + "?pages=" + intPageCount + 
    ">尾页</A>";  
    else
    str += " 尾页 ";  return str;  

        public void close_all() 
    {
            db.close_all();
    }
    }************************************************文件名《DB.java》********************************************************
    文件名《DB.java》
    package my;import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;
    //一个用于查找数据源的工具类。
    public class DB {
    private Connection con=null;
    private Statement stmt=null;
    ResultSet rs=null;public  ResultSet executeQuery(String sql) throws Exception
    {
    rs=null;
    try
    {   
    Context initCtx = new javax.naming.InitialContext(); 
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
                DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); 
        con=ds.getConnection();
        stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs=stmt.executeQuery (sql);
    }
    catch(SQLException e){throw e;}
    catch(NamingException e){throw e;}return rs;
    }
        //执行Insert,Update语句  
    public void executeUpdate(String sql) throws Exception
    {
    stmt = null;  
    rs=null;  
    try
    {  
        Context initCtx = new javax.naming.InitialContext(); 
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
                DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); 
        con=ds.getConnection();
        stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    stmt.executeQuery(sql);  
    stmt.close();  
    con.close();  
    }
    catch(SQLException ex) 
    {
    System.err.println("执行SQL语句出错: " + ex.getMessage());  
    }
    }
    // 关闭stmt和关闭连接
    public void close_all()  
    {  
    try{
    stmt.close();
    con.close();
    }  
    catch(SQLException e){e.printStackTrace();}  
    }  
    }
    ***************************************《汤母猫中的数据库连接池的设置》********************************************************************************
    ……
    ……
    ……
    <Context path="/SQL" docBase="D:\SQL_JSP" debug="0" reloadable="true" crossContext="true">
        <Resource name="jdbc/bn" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/bn">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </parameter>    <parameter>
            <name>driverClassName</name>
            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
            </parameter>    <parameter>
            <name>url</name>
            <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev</value>
            </parameter>    <parameter>
            <name>username</name>
            <value>cyg</value>
            </parameter>    <parameter>
            <name>password</name>
            <value>325345353</value>
            </parameter>    <parameter>
            <name>maxActive</name>
            <value>20</value>
            </parameter>    <parameter>
            <name>maxIdle</name>
            <value>20</value>                                    
            </parameter>    <parameter>
            <name>maxWait</name>
            <value>-1</value>
            </parameter>
    </ResourceParams>
    </Context>
          </Host>    </Engine>  </Service></Server>
      

  6.   

    给我一份,谢谢·
    [email protected]
      

  7.   

    [email protected] is what i want .
      

  8.   

    给我一份,3q
    [email protected]
      

  9.   

    我也一套
    [email protected]