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