Java Tools

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 16 評(píng)論 :: 0 Trackbacks
          主要特色:
          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.使用的是tomcat數(shù)據(jù)庫連接池,方便快速。
          請(qǐng)?zhí)峁〦_mail,為大家分享,如有高手,請(qǐng)指點(diǎn)不是。
          本人E_mail:c841@163.com,望多提意見。
          ****************************************文件名《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();}
          }
          }
          ***************************************《tomcat中的數(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>
          <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>
          
          posted on 2007-07-02 19:23 和田雨 閱讀(966) 評(píng)論(0)  編輯  收藏 所屬分類: JDBCJSP
          主站蜘蛛池模板: 常山县| 张家港市| 石城县| 天津市| 四川省| 德格县| 东乌珠穆沁旗| 资中县| 河东区| 崇义县| 海晏县| 湖南省| 页游| 开鲁县| 万载县| 沅江市| 手游| 化隆| 红河县| 鹤山市| 新蔡县| 确山县| 青冈县| 斗六市| 肇庆市| 乳山市| 武义县| 瑞金市| 福海县| 甘洛县| 莱州市| 河北区| 萍乡市| 嵊泗县| 祁连县| 互助| 农安县| 株洲县| 五指山市| 剑川县| 清涧县|