萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> jsp編程 >> 一個通用的JSP分頁類,具有顯示多組頁碼功能

一個通用的JSP分頁類,具有顯示多組頁碼功能

  最近幾天學習jsp覺得很好,寫了個分頁類,給大家分享一下,同時也請高手指點。

  第一部分:db.MysqlConn 數據庫鏈接類

  /**********************************************************

  路徑:zon.db.MysqlConn

  文件:MysqlConn.java

  用途:數據庫連接


package db;
import java.sql.*;

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;

import java.io.*;





//導入數據庫操作的類
public class MysqlConn {  

 private Connection conn;  //連接對象       
 private Statement stmt;  //語句對象   
 private ResultSet rs;    //結果集對象
 private String MySqldriver="com.mysql.jdbc.Driver";  //MYSQL Server驅動程序字符串
 private String MySqlURL =  "jdbc:mysql://";  //MYSQL Server連接字符串
 String databasex;
 String webRealPath="D://zon//WebRoot//";  //根路徑實際路徑,用於讀取數據庫鏈接參數的配置文件 database.xml
 
 // 定義數據庫鏈接參數變量
 String server="localhost";
 String dbname="phpzon";
 String user="admin";
 String pass="admin";
 String port="3306";
 String dbchara="utf-8";
 String dbprefix="zon_"; //表前綴
 
    public void setDatabasex(String databasex){
        this.databasex = databasex;
    }
    public String getDatabasex(){
         return databasex;
    }

    public void setWebRealPath(String webRealPath){
        this.webRealPath = webRealPath;
    }
    public String getWebRealPath(){
         return webRealPath;
    }
 
 
/*******************************************************************
*  用  com.mysql.jdbc.Driver 驅動 
*  該方法取得連接所需各種參數,組成連接字符串,
*  然後再建立連接*  server;dbname,user,pass,port 
*  分別表示MYSQL 服務器的地址、數據庫名、用戶名、密碼、端口,
*  本方法已作改造,直接通過配置文件 WEB-INF//database.xml 讀取鏈接信息
********************************************************************/

public Connection getMysqlConn()
{  
       
    //根據數據庫配置文件獲得數據庫鏈接參數  database.xml
    //建立解析工廠
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setIgnoringElementContentWhitespace(true);//忽略元素內容中的空格
    //創建解析器
    DocumentBuilder dbxml;
    try { 
     dbxml = factory.newDocumentBuilder();
     //得到解析文件      
     Document doc;
     try {
      doc = dbxml.parse("file:///"+webRealPath+"WEB-INF//database.xml");
      doc.normalize();
      //得到根元素
      //Element root = doc.getDocumentElement();
      //得到所有db元素
      //NodeList dbs = doc.getElementsByTagName("db");
      //NodeList dbType = doc.getElementsByTagName("type");
      NodeList dbDriver = doc.getElementsByTagName("driver");
      NodeList dbUrl = doc.getElementsByTagName("url");
      NodeList dbServer = doc.getElementsByTagName("server");
      NodeList dbPort =doc.getElementsByTagName("port");
      NodeList dbDbname =doc.getElementsByTagName("dbname");
      NodeList dbUser =doc.getElementsByTagName("user");
      NodeList dbPassword =doc.getElementsByTagName("password");
      NodeList dbChara =doc.getElementsByTagName("chara");
      NodeList dbPrefix =doc.getElementsByTagName("prefix");
      
      //獲取各參數值  
      int i=0;
      MySqldriver = dbDriver.item(i).getFirstChild().getNodeValue(); //MYSQl驅動程序 MySqldriver = "com.mysql.jdbc.Driver";    
      MySqlURL = dbUrl.item(i).getFirstChild().getNodeValue(); //鏈接路徑 "jdbc:mysql://"; 
      server = dbServer.item(i).getFirstChild().getNodeValue(); //數據庫服務器地址
      port = dbPort.item(i).getFirstChild().getNodeValue(); //數據庫端口 默認 3306
      dbname = dbDbname.item(i).getFirstChild().getNodeValue(); //數據庫名稱
      user = dbUser.item(i).getFirstChild().getNodeValue(); //用戶名
      pass = dbPassword.item(i).getFirstChild().getNodeValue(); //密碼
      dbchara = dbChara.item(i).getFirstChild().getNodeValue(); //數據庫編碼
      dbprefix = dbPrefix.item(i).getFirstChild().getNodeValue(); //表名前綴
      
      try{//完整的連接字符串
       MySqlURL=MySqlURL+server+":"+port+"/"+dbname+"?user="+user+"&password="+pass+"&useUnicode=true&characterEncoding="+dbchara; 
       
       Class.forName(MySqldriver);
       conn = DriverManager.getConnection(MySqlURL);
        }
        catch(Exception e){
         System.out.println("操作數據庫出錯,請仔細檢查");
         System.err.println(e.getMessage());
        } 
   
      
     } catch (SAXException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    
     
    } catch (ParserConfigurationException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
    
    return conn;
    
 }   

/*
 * 執行sql 語句,返回記錄集 ,主要針對 select、show語句
 */
public ResultSet sqlQuery(String sql){
 sql=SetQuery(sql);
 Statement temStmt = null;  //語句對象   
 ResultSet temRs = null;    //結果集對象
 Connection temConn=this.getMysqlConn();  
 
  try {
   temStmt=temConn.createStatement();
   //執行sql查詢語句,得到記錄集
   temRs=temStmt.executeQuery(sql);
   
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
  return temRs;  
}

/*
 * 執行Insert sql 語句  
 */
public void sqlInsert(String sql){
    sql=SetQuery(sql);
  try {
    this.getMysqlConn().createStatement().executeUpdate(sql);        
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

/*
 * 執行update sql 語句  
 */
public void sqlUpdate(String sql){
 sql=SetQuery(sql);
 try {
   this.getMysqlConn().createStatement().executeUpdate(sql);        
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
}


/*
 * 執行delete sql 語句   
 */
public void sqlDelete(String sql){
 sql=SetQuery(sql);
 try {
   this.getMysqlConn().createStatement().executeUpdate(sql);        
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
}

/*
 * 執行sql 語句,返回記錄總數 ,主要針對 select語句
 */
public int sqlTotalRow(String sql){
 Statement temStmt = null;  //語句對象   
 ResultSet temRs = null;    //結果集對象
 int result = 0; //結果值
 Connection temConn=this.getMysqlConn();  
 
  try {
   temStmt=temConn.createStatement();
   //執行sql查詢語句,得到記錄集
   temRs=temStmt.executeQuery(sql);
   temRs.last();
   result = temRs.getRow();
     
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
  return result;  
}

//設置SQL語句,會自動把SQL語句裡的#@__替換為 配置文件中的 表 前綴 zon_
public String SetQuery(String sql)
{
  String prefix="#@__";
  sql = sql.replace(prefix, this.dbprefix);
  return sql;
}
//關閉數據庫連接
public void close(){
      try{
      //rs.close();
      //stmt.close();
      conn.close();
      }
      catch(SQLException sqlexception){
      sqlexception.printStackTrace();
      }
     }


} 

第二部分: db.MysqlPages  分頁類代碼

/**********************************************************
 路徑:zon.db.MysqlPages
 文件:MysqlPages.java
 用途:優化的分頁
 ***********************************************************/
package db;

import java.sql.*;
import db.MysqlConn;  //數據庫鏈接類


/**********************************************************
 *功能:
 *標記:
 *作者:劉亞東 Yodon.Liu
 *日期:2009-8-30 下午09:20:12
 *****************************
						
copyright © 萬盛學電腦網 all rights reserved