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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    Tomcat數據庫連接池 + JavaBean + 分頁技術 + 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>

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

    主站蜘蛛池模板: 亚洲精品视频在线观看免费| 国产国拍亚洲精品mv在线观看| 91午夜精品亚洲一区二区三区| 中国性猛交xxxxx免费看| 免费一级国产生活片| 亚洲s码欧洲m码吹潮| 在线精品免费视频| 亚洲成a人无码亚洲成av无码| 成人人观看的免费毛片| 国产午夜亚洲精品| 在线免费观看视频你懂的| 亚洲.国产.欧美一区二区三区| 国产日产成人免费视频在线观看| 亚洲av片在线观看| 在线a亚洲v天堂网2018| av片在线观看永久免费| 亚洲自偷自偷偷色无码中文| 国产精品免费无遮挡无码永久视频 | 97se亚洲国产综合自在线| 97视频免费在线| 亚洲乱理伦片在线观看中字| 四虎影视在线永久免费观看| 少妇亚洲免费精品| 亚洲va无码手机在线电影| 91精品成人免费国产片| 亚洲欧美日韩中文无线码| 无码欧精品亚洲日韩一区夜夜嗨| 在线观看片免费人成视频播放| 国产亚洲一区二区在线观看| 黄+色+性+人免费| 黄页视频在线观看免费| 国产亚洲成av片在线观看| 5g影院5g天天爽永久免费影院| 亚洲kkk4444在线观看| 亚洲国产成人精品91久久久| 无码A级毛片免费视频内谢| 亚洲一级视频在线观看| 免费人成在线观看视频播放| 人人揉揉香蕉大免费不卡| 亚洲va中文字幕| 亚洲av之男人的天堂网站|