主要特色:
          1.使用最新的JDBC3.0數據庫驅動。
          2.大幅度減化了JSP的反復調用JavaBean,可以直接寫SQL,無須再使用連接數據庫連接池。
          3.將大量的工作交給JavaBean做,JSP負責頁面控制。
          4.最大特色是極其簡單,程序編寫也極其簡單,非常適合初學者。
          5.使用的是tomcat數據庫連接池,方便快速。
          請提供E_mail,為大家分享,如有高手,請指點不是。
          本人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 >商品編號</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();}
          }
          }
          ***************************************《tomcat中的數據庫連接池的設置》********************************************************************************
          ……
          ……
          ……
          <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>
          

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 4, comments - 0, trackbacks - 0, articles - 2

          Copyright © 林世軍

          主站蜘蛛池模板: 柘城县| 江门市| 余江县| 苍南县| 安图县| 福清市| 米脂县| 双流县| 连南| 大同县| 米易县| 尚义县| 兰西县| 上虞市| 金门县| 东宁县| 横峰县| 铜鼓县| 浑源县| 西城区| 普兰县| 宣恩县| 成都市| 北安市| 台中市| 汝城县| 浦江县| 日喀则市| 蒙山县| 闻喜县| 登封市| 两当县| 获嘉县| 贡觉县| 永春县| 施秉县| 台南市| 铜山县| 五河县| 尤溪县| 金寨县|