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

          導(dǎo)航

          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          公告

          留言簿(15)

          隨筆分類(493)

          隨筆檔案(498)

          相冊(cè)

          閱讀排行榜

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評(píng)論

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

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

          主站蜘蛛池模板: 阿鲁科尔沁旗| 馆陶县| 拉孜县| 颍上县| 哈尔滨市| 皋兰县| 冷水江市| 西宁市| 阿克| 富川| 安康市| 博湖县| 开江县| 古蔺县| 兰考县| 高淳县| 华池县| 安龙县| 樟树市| 新和县| 溆浦县| 军事| 阳朔县| 黄骅市| 金阳县| 左云县| 井冈山市| 波密县| 二手房| 哈尔滨市| 旺苍县| 花莲县| 泰顺县| 上高县| 黎川县| 芜湖县| 正阳县| 信阳市| 五河县| 盘锦市| 贡山|