主要特色:
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>