最近幾天學習jsp覺得很好寫了個分頁類給大家分享一下同時也請高手指點
第一部分dbMysqlConn 數據庫鏈接類
/**********************************************************
路徑zondbMysqlConn
文件MysqlConnjava
用途數據庫連接
package db;
import javasql*;
import javaxxmlparsers*;
import orgwcdom*;
import orgxmlsaxSAXException;
import javaio*;
//導入數據庫操作的類
public class MysqlConn {
private Connection conn; //連接對象
private Statement stmt; //語句對象
private ResultSet rs; //結果集對象
private String MySqldriver="commysqljdbcDriver"; //MYSQL Server驅動程序字符串
private String MySqlURL = "jdbc:mysql://"; //MYSQL Server連接字符串
String databasex;
String webRealPath="D://zon//WebRoot//"; //根路徑實際路徑用於讀取數據庫鏈接參數的配置文件 databasexml
// 定義數據庫鏈接參數變量
String server="localhost";
String dbname="phpzon";
String user="admin";
String pass="admin";
String port="";
String dbchara="utf";
String dbprefix="zon_"; //表前綴
public void setDatabasex(String databasex){
thisdatabasex = databasex;
}
public String getDatabasex(){
return databasex;
}
public void setWebRealPath(String webRealPath){
thiswebRealPath = webRealPath;
}
public String getWebRealPath(){
return webRealPath;
}
/*******************************************************************
* 用 commysqljdbcDriver 驅動
* 該方法取得連接所需各種參數組成連接字符串
* 然後再建立連接* server;dbnameuserpassport
* 分別表示MYSQL 服務器的地址數據庫名用戶名密碼端口
* 本方法已作改造直接通過配置文件 WEBINF//databasexml 讀取鏈接信息
********************************************************************/
public Connection getMysqlConn()
{
//根據數據庫配置文件獲得數據庫鏈接參數 databasexml
//建立解析工廠
DocumentBuilderFactory factory = DocumentBuilderFactorynewInstance();
factorysetIgnoringElementContentWhitespace(true);//忽略元素內容中的空格
//創建解析器
DocumentBuilder dbxml;
try {
dbxml = factorynewDocumentBuilder();
//得到解析文件
Document doc;
try {
doc = dbxmlparse("file:///"+webRealPath+"WEBINF//databasexml");
docnormalize();
//得到根元素
//Element root = docgetDocumentElement();
//得到所有db元素
//NodeList dbs = docgetElementsByTagName("db");
//NodeList dbType = docgetElementsByTagName("type");
NodeList dbDriver = docgetElementsByTagName("driver");
NodeList dbUrl = docgetElementsByTagName("url");
NodeList dbServer = docgetElementsByTagName("server");
NodeList dbPort =docgetElementsByTagName("port");
NodeList dbDbname =docgetElementsByTagName("dbname");
NodeList dbUser =docgetElementsByTagName("user");
NodeList dbPassword =docgetElementsByTagName("password");
NodeList dbChara =docgetElementsByTagName("chara");
NodeList dbPrefix =docgetElementsByTagName("prefix");
//獲取各參數值
int i=;
MySqldriver = dbDriveritem(i)getFirstChild()getNodeValue(); //MYSQl驅動程序 MySqldriver = "commysqljdbcDriver";
MySqlURL = dbUrlitem(i)getFirstChild()getNodeValue(); //鏈接路徑 "jdbc:mysql://";
server = dbServeritem(i)getFirstChild()getNodeValue(); //數據庫服務器地址
port = dbPortitem(i)getFirstChild()getNodeValue(); //數據庫端口 默認
dbname = dbDbnameitem(i)getFirstChild()getNodeValue(); //數據庫名稱
user = dbUseritem(i)getFirstChild()getNodeValue(); //用戶名
pass = dbPassworditem(i)getFirstChild()getNodeValue(); //密碼
dbchara = dbCharaitem(i)getFirstChild()getNodeValue(); //數據庫編碼
dbprefix = dbPrefixitem(i)getFirstChild()getNodeValue(); //表名前綴
try{//完整的連接字符串
MySqlURL=MySqlURL+server+":"+port+"/"+dbname+"?user="+user+"&password="+pass+"&useUnicode=true&characterEncoding="+dbchara;
ClassforName(MySqldriver);
conn = DriverManagergetConnection(MySqlURL);
}
catch(Exception e){
Systemoutprintln("操作數據庫出錯請仔細檢查");
Systemerrprintln(egetMessage());
}
} catch (SAXException e) {
// TODO Autogenerated catch block
eprintStackTrace();
} catch (IOException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
} catch (ParserConfigurationException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
return conn;
}
/*
* 執行sql 語句返回記錄集 主要針對 selectshow語句
*/
public ResultSet sqlQuery(String sql){
sql=SetQuery(sql);
Statement temStmt = null; //語句對象
ResultSet temRs = null; //結果集對象
Connection temConn=thisgetMysqlConn();
try {
temStmt=temConncreateStatement();
//執行sql查詢語句得到記錄集
temRs=temStmtexecuteQuery(sql);
} catch (SQLException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
return temRs;
}
/*
* 執行Insert sql 語句
*/
public void sqlInsert(String sql){
sql=SetQuery(sql);
try {
thisgetMysqlConn()createStatement()executeUpdate(sql);
} catch (SQLException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
}
/*
* 執行update sql 語句
*/
public void sqlUpdate(String sql){
sql=SetQuery(sql);
try {
thisgetMysqlConn()createStatement()executeUpdate(sql);
} catch (SQLException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
}
/*
* 執行delete sql 語句
*/
public void sqlDelete(String sql){
sql=SetQuery(sql);
try {
thisgetMysqlConn()createStatement()executeUpdate(sql);
} catch (SQLException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
}
/*
* 執行sql 語句返回記錄總數 主要針對 select語句
*/
public int sqlTotalRow(String sql){
Statement temStmt = null; //語句對象
ResultSet temRs = null; //結果集對象
int result = ; //結果值
Connection temConn=thisgetMysqlConn();
try {
temStmt=temConncreateStatement();
//執行sql查詢語句得到記錄集
temRs=temStmtexecuteQuery(sql);
temRslast();
result = temRsgetRow();
} catch (SQLException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
return result;
}
//設置SQL語句會自動把SQL語句裡的#@__替換為 配置文件中的 表 前綴 zon_
public String SetQuery(String sql)
{
String prefix="#@__";
sql = sqlreplace(prefix thisdbprefix);
return sql;
}
//關閉數據庫連接
public void close(){
try{
//rsclose();
//stmtclose();
connclose();
}
catch(SQLException sqlexception){
sqlexceptionprintStackTrace();
}
}
}
第二部分 dbMysqlPages 分頁類代碼
/**********************************************************
路徑zondbMysqlPages
文件MysqlPagesjava
用途優化的分頁
***********************************************************/
package db;
import javasql*;
import dbMysqlConn; //數據庫鏈接類
/**********************************************************
*功能
*標記
*作者劉亞東 YodonLiu
*日期 下午::
***********************************************************/
public class MysqlPages {
int PageSize=; //調用時可自定義變量每頁條數
int PageRows=; //調用時可自定義變量頁碼組每組顯示多少個頁碼編號默認實際顯示數會自動+包含當前頁碼
int RowCount=;//總條數
int PageCount=;//總頁數
int inPage=; //當前頁碼默認值
int inRow=; //本頁查詢開始行號 默認
String linkPage = "?"; //調用時可以自定義變量頁碼鏈接頁面
String webRealPath="/"; //網站真實根路徑通過jsp頁面獲得之後傳遞過來
//顯示文字 默認 調用時可以自定義變量
String langs = "首頁上一頁下一頁尾頁共條記錄頁";
String[] langss= langssplit("");
String lang_first_page = langss[];
String lang_pre_page = langss[];
String lang_next_page = langss[];
String lang_end_page = langss[];
String lang_total = langss[];
String lang_record_number = langss[];
String lang_page = langss[];
//臨時
String sql="";
String page="";
private Statement stmt; //語句對象
private ResultSet rs; //結果集對象
//返回值分頁頁碼列表
String pagesInfo="";
/****
* 主方法 獲得 分頁列表字符串
* @return
*/
public String pageInfo(){
MysqlConn DBConn = new MysqlConn(); //創建數據庫鏈接實例可根據自己的實際情況修改
RowCount = DBConnsqlTotalRow(sql); //在MysqlConn中有一個 sqlTotalRow 方法用於求記錄總和(請根據自己的求記錄總和的方式修改此處)
PageCount=(RowCount+PageSize)/PageSize;
if(page!=null) inPage=IntegerparseInt(page);
if(inPage<) inPage=;
if(inPage>PageCount) inPage=PageCount;
inRow = (inPage)*PageSize;
sql=sql + " limit " + StringvalueOf(inRow) + "" + StringvalueOf(PageSize);
rs=DBConnsqlQuery(sql);
//頁碼顯示部分
int PageRowsL = PageRows/; // 生成當前頁碼 左側最大調用的頁碼數
int PageRowsR = PageRowsPageRows/; // 生成當前頁碼 右側最大調用的頁碼數
if(inPage<=PageRowsL){
PageRowsL = inPage;
PageRowsR = PageRowsinPage+;
}
if(inPage+PageRowsR>PageCount){
PageRowsL = PageRows(PageCountinPage);
PageRowsR = PageCountinPage;
}
int PageLs=; //左側開始最大頁碼號
int PageRs=PageCount; //左側開始最大頁碼號
PageLs = ((inPage PageRowsL)>=)?inPagePageRowsL:; //實際左側第一個顯示的頁碼
PageRs = ((inPage + PageRowsR)<=PageCount)?inPage+PageRowsR:PageCount; //實際右側第一個顯示的頁碼
pagesInfo = pagesInfo+("<div class=dh_pages><ul><li class=total>"+lang_total+""+RowCount+lang_record_number+""+PageCount+lang_page+"</li>");
//首頁
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page=/">"+lang_first_page+"</a></li>");
//上一頁
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page="+(inPage)+"/">"+lang_pre_page+"</a></li>");
//左側頁碼
if(PageLs!=inPage){
for(int iL=PageLs;iL<inPage;iL++){
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page="+iL+"/">"+iL+"</a></li>");
}
}
//當前頁碼
pagesInfo = pagesInfo+("<li class=inpage><a href="/" mce_href="/"""+linkPage+"page="+inPage+"/">"+inPage+"</a></li>");
//右側頁碼
if(PageRs!=inPage){
for(int iR=inPage+;iR<=PageRs;iR++){
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page="+iR+"/">"+iR+"</a></li>");
}
}
//下一頁
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page="+(inPage+)+"/">"+lang_next_page+"</a></li>");
//尾頁
pagesInfo = pagesInfo+("<li><a href="/" mce_href="/"""+linkPage+"page="+PageCount+"/">"+lang_end_page+"</a></li>");
pagesInfo = pagesInfo+("</ul></div>");
return pagesInfo;
}
public void setPage(String page){
thispage = page;
}
public String getPage(){
return page;
}
public void setSql(String sql){
thissql = sql;
}
public String getSql(){
return sql;
}
public void setLinkPage(String linkPage){
thislinkPage = linkPage;
}
public String getLinkPage(){
return linkPage;
}
public void setPageSize(int PageSize){
thisPageSize = PageSize;
}
public int getPageSize(){
return PageSize;
}
public void setPageRows(int PageRows){
thisPageRows = PageRows;
}
public int getPageRows(){
return PageRows;
}
public void setLangs(String langs){
thislangs = langs;
}
public String getLangs(){
return langs;
}
public void setLang_first_page(String lang_first_page){
thislang_first_page = lang_first_page;
}
public String getLang_first_page(){
return lang_first_page;
}
public void setLang_pre_page(String lang_pre_page){
thislang_pre_page = lang_pre_page;
}
public String getLang_pre_page(){
return lang_pre_page;
}
public void setLang_next_page(String lang_next_page){
thislang_next_page = lang_next_page;
}
public String getLang_next_page(){
return lang_next_page;
}
public void setLang_end_page(String lang_end_page){
thislang_end_page = lang_end_page;
}
public String getLang_end_page(){
return lang_end_page;
}
public void setLang_total(String lang_total){
thislang_total = lang_total;
}
public String getLang_total(){
return lang_total;
}
public void setLang_record_number(String lang_record_number){
thislang_record_number = lang_record_number;
}
public String getLang_record_number(){
return lang_record_number;
}
public void setLang_page(String lang_page){
thislang_page = lang_page;
}
public String getLang_page(){
return lang_page;
}
/*
String lang_first_page = "首頁";
String lang_pre_page = "上一頁";
String lang_next_page = "下一頁";
String lang_end_page = "尾頁";
String lang_total = "共";
String lang_record_number = "條記錄";
String lang_page = "頁";
*/
public void setWebRealPath(String webRealPath){
thiswebRealPath = webRealPath;
}
public String getWebRealPath(){
return webRealPath;
}
public void setRs(ResultSet rs){
thisrs = rs;
}
public ResultSet getRs(){
return rs;
}
}
第三部分JSP頁面 調用
<%
//設置屬性值
DBPagessetPageSize(); //每頁條數
DBPagessetPageRows(); //每組頁數最好是偶數會自動加上當前頁碼
//為不同的按鈕設置 圖片也可以直接設置文字如首頁上一頁下一頁尾頁
DBPagessetLang_first_page("<img src="/themes/" mce_src="themes""+_dh_manage_themes+"/images/startgif border=>");
DBPagessetLang_pre_page("<img src="/themes/" mce_src="themes""+_dh_manage_themes+"/images/previousgif border=>");
DBPagessetLang_next_page("<img src="/themes/" mce_src="themes""+_dh_manage_themes+"/images/nextgif border=>");
DBPagessetLang_end_page("<img src="/themes/" mce_src="themes""+_dh_manage_themes+"/images/endgif border=>");
DBPagessetSql("select * from admin "); //sql語句
//傳遞當前頁碼
DBPagessetPage(requestgetParameter("page"));
//執行並獲取分頁內容
String pageInfos = DBPagespageInfo();
//顯示當前頁面記錄列表
ResultSet rs=DBPagesgetRs();
while(rsnext()){
outprintln(rsgetString("admin_id"));
outprintln(rsgetString("admin_user"));
}
%>
第四部分樣式表 用於控制頁碼行顯示效果
/* 通用分頁樣式 */
dh_pages{
}
dh_pages ul{
float:left;
padding:px px px px;
}
dh_pages ul li{
float:left;
fontfamily:Tahoma;
lineheight:px;
marginright:px;
}
dh_pages ul li a{
float:left;
padding:px px px;
color:#;
borderbottom:px solid #EEE;
}
dh_pages ul li a:hover{
color:#;
textdecoration:none;
padding:px px px;
borderbottom:px solid #;
}
dh_pages ul liinpage apagebox ul liinpage a:hover{
color:#F;
padding:px px px;
borderbottom:px solid #F;
fontweight:bold;
}
/* 分頁中總頁碼總數樣式一般居左或居右對齊 */
dh_pages total{
float:right;
lineheight:px;
color:#;
}
dh_pages total strong{
color:#;
fontweight:normal;
margin:px px;
}
第五部分附數據庫鏈接參數配置文件 databasexml
本例中讀取數據庫時使用了一個數據庫鏈接的自定義配置文件放在 WebRoot/WEBINF/ 目錄下其內容如下
<?xml version="" encoding="utf"?>
<dbconfig>
<db id="">
<type>mysql</type>
<driver>commysqljdbcDriver</driver>
<url>jdbc:mysql://</url>
<server>localhost</server>
<port></port>
<dbname>zon</dbname>
<user>admin</user>
<password>admin</password>
<chara>utf</chara>
<prefix>zon_</prefix>
</db>
</dbconfig>
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20090.html