<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    friends

    link

    最新評(píng)論

    Tomcat數(shù)據(jù)庫(kù)連接池 + JavaBean + 分頁(yè)技術(shù) + JDBC3.0 + 大型數(shù)據(jù)庫(kù)- -

    主要特色: ?
    1.使用最新的JDBC3.0數(shù)據(jù)庫(kù)驅(qū)動(dòng)。 ?
    2.大幅度減化了JSP的反復(fù)調(diào)用JavaBean,可以直接寫(xiě)SQL,無(wú)須再使用連接數(shù)據(jù)庫(kù)連接池。 ?
    3.將大量的工作交給JavaBean做,JSP負(fù)責(zé)頁(yè)面控制。 ?
    4.最大特色是極其簡(jiǎn)單,程序編寫(xiě)也極其簡(jiǎn)單,非常適合初學(xué)者。 ?
    5.使用的是"湯母貓"數(shù)據(jù)庫(kù)連接池,方便快速。 ?
    ?
    《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 ?>商品編號(hào)</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; ?//初始化總記錄數(shù)Rs變量 ? ? ?
    ResultSet ?Pagirs=null; ?//初始化分頁(yè)時(shí)Rs變量 ?
    public ?int ?intCountTopic=0; ?//主題總數(shù) ?
    public ?int ?intPageSize;//每頁(yè)顯示主題數(shù) ? ?
    public ?int ?intPageCount;//總頁(yè)數(shù) ? ?
    public ?int ?intPage=1; ?//當(dāng)前頁(yè)數(shù) ? ?
    public ?String ?nowPage; ?// ?int ?i; ?
    public ?String ?HttpFile;//初始化當(dāng)前頁(yè)intPage變量,以準(zhǔn)確便獲取當(dāng)前頁(yè)。 ?//當(dāng)前的地址欄的文件 ?
    DB ?db; ?//定義Linkdb類的一個(gè)對(duì)象。 ?
    ?
    public ?Pagi()//定義構(gòu)造器,初始化每頁(yè)顯示的主題數(shù)和數(shù)據(jù)庫(kù)的連接。 ?
    { ?
    intPageSize=4; ? ?//每頁(yè)顯示的記錄數(shù)目 ?
    db ?= ?new ?DB(); ? ?
    } ?
    ?
    //Countsql:總記錄的Query字符串。[形式為select ?count(*) ?from ?tablename] ? ? ?
    //Pagisql ?:要分頁(yè)的Query字符串。[形式為select ?* ?from ?tablename ?where ?...] ? ? ?
    //request ?:參數(shù)傳遞過(guò)程中的變量。[用來(lái)控制翻頁(yè)時(shí)的pages變量] ? ? ?
    public ?ResultSet ?querySql(String ?Countsql,String ?Pagisql,HttpServletRequest ?request)throws ?Exception ?
    { ?
    HttpFile=request.getRequestURI(); ? ?//獲取當(dāng)前文件名。 ? ?
    nowPage=request.getParameter("pages"); ? ?//獲取當(dāng)前頁(yè),將數(shù)值賦予intPage變量。[分頁(yè)欄中必須要有pages參數(shù)] ? ?
    if ?(nowPage==null) ?
    { ? ?
    intPage=1; ? ?
    } ?
    else ?
    { ? ?
    intPage=Integer.parseInt(nowPage); ? ?
    if ?(intPage<1) ? ?
    intPage=1; ? ?
    } ?
    ?
    ? ? ? ?CountTopicrs=db.executeQuery(Countsql); ?//@@@@@@@@@@@@獲取總記錄數(shù)的結(jié)果集。 ? ?
    ?
    if ?(CountTopicrs.next()) ? ? ?
    { ?
    intCountTopic=CountTopicrs.getInt(1); ? ? ?
    } ?
    intPageCount ?= ?(intCountTopic+intPageSize-1)/intPageSize; ? ?//獲取總頁(yè)數(shù)。 ?
    ?
    if ?(intPage>intPageCount)//如果當(dāng)前頁(yè)大于總頁(yè)數(shù),則當(dāng)前頁(yè)等于總頁(yè)數(shù)。 ? ?
    { ?
    intPage=intPageCount; ? ? ?
    } ? ? ?
    CountTopicrs.close(); ? ?//關(guān)閉總主題數(shù)的數(shù)據(jù)集。 ?
    ? ? ? ? ? ? ? ?db.close_all(); ?
    Pagirs=db.executeQuery(Pagisql); ? ?//@@@@@@@@@@@@@@@獲取執(zhí)行分頁(yè)的結(jié)果集。 ? ?
    return ?Pagirs; ? ? ?
    }//end ?querySql ?function. ? ? ?
    ?
    ? ? ?
    public ?int ?getCountTopic()//獲取記錄總數(shù)。 ?
    { ?
    return ?intCountTopic; ? ? ?
    } ?
    ?
    ? ? ?
    public ?int ?getPageCount() ?//獲取總頁(yè)數(shù)。 ? ?
    { ?
    return ?intPageCount; ? ? ?
    } ?
    ?
    ?
    public ?int ?getIntPage() ? ?//獲取當(dāng)前頁(yè)數(shù)。 ? ?
    { ? ? ?
    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>頁(yè)"; ? ? ?
    str ?+=" ?第<font ?color=red>"+getIntPage()+"</font>頁(yè) ?"; ? ? ?
    if(intPage>1) ? ?
    str ?+= ?" ?<A ?href=" ?+ ?HttpFile ?+ ?"?pages=1"+">首頁(yè)</A> ?"; ? ? ?
    else ? ?
    str ?+= ?" ?首頁(yè) ?"; ? ? ?
    if(intPage>1) ?
    str ?+= ?" ?<A ?href=" ?+ ?HttpFile ?+ ?"?pages=" ?+ ?prev ?+ ?">上一頁(yè)</A> ?"; ? ? ?
    else ?
    str ?+= ?" ?上一頁(yè) ?"; ? ? ?
    if(intPage<intPageCount) ? ? ?
    str ?+= ?" ?<A ?href=" ?+ ?HttpFile ?+ ?"?pages=" ?+ ?next ?+ ?">下一頁(yè)</A> ?"; ? ? ?
    else ? ?
    str ?+= ?" ?下一頁(yè) ?"; ? ? ?
    if(intPageCount>1&&intPage!=intPageCount) ? ? ?
    str ?+= ?" ?<A ?href=" ?+ ?HttpFile ?+ ?"?pages=" ?+ ?intPageCount ?+ ? ?
    ">尾頁(yè)</A>"; ? ? ?
    else ?
    str ?+= ?" ?尾頁(yè) ?"; ? ? ?
    ?
    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; ?
    //一個(gè)用于查找數(shù)據(jù)源的工具類。 ?
    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; ?
    } ?
    ?
    ?
    ? ? ? ?//執(zhí)行Insert,Update語(yǔ)句 ? ? ?
    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("執(zhí)行SQL語(yǔ)句出錯(cuò): ?" ?+ ?ex.getMessage()); ? ? ?
    } ?
    } ?
    ?
    ?
    // ?關(guān)閉stmt和關(guān)閉連接 ?
    public ?void ?close_all() ? ? ?
    { ? ? ?
    try{ ?
    stmt.close(); ?
    con.close(); ?
    } ? ? ?
    catch(SQLException ?e){e.printStackTrace();} ? ? ?
    } ? ? ?
    } ?
    ?
    ?
    ***************************************《湯母貓中的數(shù)據(jù)庫(kù)連接池的設(shè)置》******************************************************************************** ?
    …… ?
    …… ?
    …… ?
    <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>

    posted on 2006-05-25 09:26 liaojiyong 閱讀(369) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: xxxxx免费视频| 国产精品成人免费福利| 国产一区视频在线免费观看| 亚洲另类精品xxxx人妖| 日本成年免费网站| 亚洲一卡2卡3卡4卡乱码 在线| 啦啦啦高清视频在线观看免费| 亚洲色偷偷综合亚洲av78| 毛片免费全部免费观看| 在线aⅴ亚洲中文字幕| 成人免费无码大片A毛片抽搐色欲| 四虎亚洲精品高清在线观看| 韩国二级毛片免费播放| 国产亚洲视频在线| 亚洲无码日韩精品第一页| 国产午夜成人免费看片无遮挡| 亚洲福利视频一区| 久久精品无码一区二区三区免费| 亚洲中文字幕久久精品无码VA | 亚洲网站视频在线观看| 国产精品视频免费观看| 亚洲欧美国产欧美色欲| 亚洲国产精品嫩草影院久久 | 免费av欧美国产在钱| 在线视频亚洲一区| 亚洲精品无码MV在线观看| 国产精品免费AV片在线观看| 亚洲一区二区三区久久久久| 国产成人免费永久播放视频平台| 国产免费播放一区二区| 亚洲福利一区二区| 国产精品免费视频网站| 免费视频精品一区二区三区 | 亚洲乱码一二三四区国产| 国产资源免费观看| 香港a毛片免费观看| 亚洲欧美成人一区二区三区| 亚洲色偷偷综合亚洲AVYP| 国产免费一区二区三区| 又粗又长又爽又长黄免费视频 | 在线精品一卡乱码免费|