主要特色: 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>
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
|
||
相關(guān)文章:
|
||