同求!如果你有收到,请发一份给我!谢谢
小弟的邮箱:[email protected]

解决方案 »

  1.   

    http://www.netyi.net/in.asp?id=Kinglight
      

  2.   

    顺便给我也发一份,谢谢。
    [email protected]
      

  3.   

    同求!如果你有收到,请发一份给我!谢谢
    小弟的邮箱是:[email protected]
      

  4.   

    同求!如果你有收到,请发一份给我!谢谢
    [email protected]
      

  5.   

    希望有机会跟你学习,如果你有收到,请发一份给我!谢谢
    [email protected]
      

  6.   

    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>
      

  7.   

    [email protected]
     谢谢先!
      

  8.   

    bluelily22(丁丁) 发的代码是正确可用的,但是我个人认为其有一下缺点:
    1.为了计算记录集的总数,总共访问了两次数据库,没有必要,而且这样开销有点大!只需访问数据库一次即可!
    2.每页显示的记录条数在javabean中固定死了,不能灵活修改每页显示的条数!
    所以我对上面的代码进行了修改,还请各位高手指点!
    //Pagi.java
    package my;import java.sql.*;
    import javax.servlet.http.*;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() { //定义构造器,初始化每页显示的主题数和数据库的连接。
            db = new DB();
        }//pageSize:每页显示主题数
    //Pagisql :要分页的Query字符串。[形式为select * from newstable where ...]
    //request :参数传递过程中的变量。[用来控制翻页时的pages变量]
        public ResultSet querySql(int pageSize, String Pagisql, HttpServletRequest request) throws Exception {
            intPageSize = pageSize;
            HttpFile = request.getRequestURI(); //获取当前文件名。
            nowPage = request.getParameter("pages"); //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]
            if (nowPage == null) {
                intPage = 1;
            }
            else {
                intPage = Integer.parseInt(nowPage);
                if (intPage < 1) {
                    intPage = 1;
                }
            }        Pagirs = db.executeQuery(Pagisql); //@@@@@@@@@@@@@@@获取执行分页的结果集。        Pagirs.last();
            intCountTopic = Pagirs.getRow(); //@@@@@@@@@@@@获取总记录数的结果集。
            Pagirs.beforeFirst(); //定位到第一条记录集的之前!        intPageCount = (intCountTopic + intPageSize - 1) / intPageSize; //获取总页数。        if (intPage > intPageCount) { //如果当前页大于总页数,则当前页等于总页数。
                intPage = intPageCount;
            }        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();
        }
    }//
    《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> 
    <% 
    int intPageSize=20;
    String query = "select * from 商品资料";  
    ResultSet rs = pagi.querySql(intPageSize,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>另外我认为在DB.java访问数据库的bean中对数据库驱动的加载和连接的获取部分,放在DB.java的构造方法中是否要好一点呢?
    Context initCtx = new javax.naming.InitialContext(); 
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
                DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); 
        con=ds.getConnection();
      

  9.   

    兄弟还有吗?也给俺们来份。俺们村选支书耽误了,[email protected]
      

  10.   

    大哥:们给小妹留一份[email protected]
      

  11.   

    小弟是新手.
    麻烦楼主给我一个 [email protected]
      

  12.   

    谢谢了,小弟的邮箱是[email protected]
      

  13.   

    大虾们 给小弟一份
    [email protected]
      

  14.   

    我也没收到啊
    大家看看 bluelily22(丁丁) 和huyc_fly() 
    的帖学习下