您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> jsp编程 >> 正文

一个通用的JSP分页类,具有显示多组页码功能

作者:佚名    责任编辑:admin    更新时间:2022-06-22

  最近几天学习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
 *****************************