JSP通用分页函数 分页程序实例

第一个文件PagedbClass.java

 代码如下 复制代码
package com.kanba.tools;  
 
import java.sql.*;  
 
import com.kanba.connection.Conn;  
 
public class PagedbClass {  
 
Connection con = null;  
Statement stmt = null;  
ResultSet rs = null;  
ResultSetMetaData resultsMeta =null;  
int rows = 0;  
public PagedbClass() {  
    con = new Conn().getConnection();  
}  
public ResultSet executeQuery(String sql) throws SQLException{  
   ResultSet rs = null;  
   try{  
    stmt = con.createStatement();  
    rs = stmt.executeQuery(sql);  
    while(rs.next())  
     this.rows ++;  
    rs = stmt.executeQuery(sql);  
   }  
   catch (SQLException e){  
    System.out.print("Query:"+e.getMessage());  
   }  
 
   this.rs = rs;  
   return rs;  
}  
public boolean executeUpdate(String sql){  
   try{  
    stmt = con.createStatement();  
    stmt.executeUpdate(sql);  
    return true;  
   }  
   catch(SQLException e){  
    System.out.print("Update:"+e.getMessage());  
    return false;  
   }  
}  
public int getColumns(){  
   int columns = 0;  
   try{  
    this.resultsMeta = this.rs.getMetaData();  
    columns = this.resultsMeta.getColumnCount();  
   }  
   catch (SQLException e) {}  
   return columns;  
}  
public int getRows(){  
   return this.rows;  
}  
public void closedb(){  
   try{  
    con.close();  
   }catch(SQLException e){  
    e.printStackTrace();  
   }  
    
}  
 
 

第二个文件分页通用类 PageQuery.java

 代码如下 复制代码

package com.kanba.tools;  
 
import java.sql.*;  
import javax.servlet.http.*;  
 
public class PageQuery {  
 
int Offset; // 记录偏移量  
int Total; // 记录总数  
 
int MaxLine; // 记录每页显示记录数  
ResultSet rs; // 读出的结果  
 
int TPages; // 总页数  
int CPages; // 当前页数  
 
String PageQuery; // 分页显示要传递的参数  
String Query; // query 语句  
String QueryPart; // " FROM " 以后的 query 部分  
 
String FilePath;  
 
PagedbClass db; // object of dbclass  
 
//constructer do nothing  
public PageQuery() {  
// 每页显示十行  
   MaxLine = 30;  
   db = new PagedbClass();  
}  
 
//********读取记录***************  
// 主要工作函数,根据所给的条件从表中读取相应的记录  
 
public ResultSet myQuery(String query, HttpServletRequest req) throws SQLException {  
 
   String query_part, os;  
   int begin, offset;  
 
   // 截取 " FROM " 以后的 query 语句  
   begin = query.indexOf(" FROM ");  
   query_part = query.substring(begin, query.length()).trim();  
 
// 计算偏移量  
   os = req.getParameter("offset");  
   if (os == null) Offset = 0;  
   else Offset = Integer.parseInt(os);  
 
// 获取文件名  
   FilePath = req.getRequestURI();  
 
   Query = query;  
   QueryPart = query_part;  
 
// 计算总的记录条数  
   String SQL = "SELECT Count(*) AS total " + this.QueryPart;  
   rs = db.executeQuery(SQL);  
   if (rs.next())  
    Total = rs.getInt(1);  
 
// 设置当前页数和总页数  
   TPages = (int)Math.ceil((double)this.Total/this.MaxLine);  
   CPages = (int)Math.floor((double)Offset/this.MaxLine+1);  
 
// 根据条件判断,取出所需记录  
   if (Total > 0) {  
    SQL = Query + " LIMIT " + Offset + " , " + MaxLine;  
    rs = db.executeQuery(SQL);  
   }  
    
   return rs;  
}  
public void close(){  
   db.closedb();  
}  
 
// 显示总页数  
public int getTotalPages() {  
   return TPages;  
}  
 
//显示当前所在页数  
public int getCurrenPages() {  
   return CPages;  
}  
 
//**********显示翻页提示栏*************  
// 显示首页、下页、上页、尾页  
public String PageLegend() {  
 
   String str = "";  
   int first, next, prev, last;  
   first = 0;  
   next = Offset + MaxLine;  
   prev = Offset - MaxLine;  
   last = (this.TPages - 1) * MaxLine;  
 
   if(Offset >= MaxLine)  
    str += " <A href=" + FilePath + "?offset=" + first + ">首页</A> ";  
   else str += " 首页 ";  
   if(prev >= 0)  
    str += " <A href=" + FilePath + "?offset=" + prev + ">前页</A> ";  
   else str += " 前页 ";  
   if(next < Total)  
    str += " <A href=" + FilePath + "?offset=" + next + ">后页</A> ";  
   else str += " 后页 ";  
   if(TPages != 0 && CPages < TPages)  
    str += " <A href=" + FilePath + "?offset=" + last + ">尾页</A>";  
   else str += " 尾页 ";  
 
   str += " 页次:" + getCurrenPages() + "/" + getTotalPages() + "页 ";  
   str += MaxLine + "条/页 " + "共" + Total + "条";  
   String pageNum;  
   return str;  
}  

数据库连接文件 Conn.java

 代码如下 复制代码

package com.kanba.connection  
 
import java.sql.*;  
 
public class Conn {  
public Conn(){}  
//这个是连接数据库的代码,也可以通过连接池等技术实现。  
String driverClass="org.gjt.mm.mysql.Driver";  
String url = "jdbc:mysql://localhost/test?user=root&password=0&useUnicode=true&characterEncoding=gb2312";  
String username="root";  
String password="pwd";  
Connection conn=null;       //初始化  
 
public Connection getConnection()  
{  
   try {  
    Class.forName(driverClass); //加载驱动  
   // System.out.println("jiazaichenggong");  
   } catch (ClassNotFoundException e) {  
    e.printStackTrace();  
   }  
   try {  
    conn=DriverManager.getConnection(url); //建立连接conn      
     
   } catch (SQLException e) {  
 
    e.printStackTrace();  
   }  
   return conn;  
}  

分页测试文件 page.jsp
<%@ page language="java" import="java.sql.*, com.kanba.tools.*" %>  
<%@ page contentType="text/html; charset=gb2312" %>  
<jsp:useBean id="pq" scope="page" class="com.kanba.tools.PageQuery" />  
<html>  
 
<body bgcolor="#8BA9C9">  
<table bgcolor="#fecda9" cellspacing=0>  
<%  
 
String query = "SELECT * FROM users";   // 注意这个" FROM "一定要大写,程序中需要靠这个FROM后的query语句判断总行数。         
ResultSet rs = pq.myQuery(query, request);  
String bar = pq.PageLegend(); //读取分页提示栏  
 
out.println("<tr><td colspan=2>"+bar+"</td></tr>");  
out.println("<tr><td colspan=2><hr size=1 color=blue></td></tr>");  
while (rs.next()) {  
//说明:rs.getString(2)等是列名相对应的位置,不要用rs.getString("colmn_name")这种形式  
%>  
<tr><td><%=rs.getString(1)%></td><td><%=rs.getString(2)%></td></tr>  
<% }  
rs.close;pq.close();  
%>  
</table>  
</body>  
</html> 

时间: 2024-09-29 04:53:29

JSP通用分页函数 分页程序实例的相关文章

Asp.Net实现的通用分页函数_实用技巧

本文实例讲述了Asp.Net实现的通用分页函数.分享给大家供大家参考,具体如下: 功能: 1.每页设置显示9页,超过9页,点5页后的+1页显示(可以随便修改) 2.CSS样式自己可以设置 3.无任何咋代码产生,利于搜索引擎优化 分页程序 objPDS = new PagedDataSource(); objPDS.DataSource = dtTable.DefaultView;//绑定数据源 objPDS.AllowPaging = true; objPDS.PageSize =10;//分页

JSP通用分页框架_JSP编程

写一个通用的分页框架,这样在项目里面如果想实现分页功能,只需要稍加改动参数就可以实现分页处理了.这样写了会节省很多时间. 一.分页类 既然要分页那么我们就要考虑建一个通用的分页类,里面需要的参数一般有: 总页数 totalPage 总共记录数 totalRecord 每页显示数 pageSize 当前页pageIndex 承载当前页数据的集合 List datas 完整代码:Page.java import java.util.List; public class Pager<E> { /**

php分页函数完整实例代码_php技巧

本文分享一例php分页函数完整实例代码,使用此函数实现分页效果很不错.分享给大家供大家参考. 具体功能代码如下: <?php /* * Created on 2011-07-28 * 使用方法: require_once('mypage.php'); $result=mysql_query("select * from mytable", $myconn); $total=mysql_num_rows($result); //取得信息总数 pageDivide($total,10

php通用分页类代码实例

php教程通用分页类代码 */ class dividepage  //分页类 {  private $page ; //当前页  private $total ; //总的记录数  private $pagesize;  //每页的记录数  private $prepage ;  //前一页  private $nextpage; //后一页  private $lastpage ; //最后一页  private $url;   //url  private $start; //当页显示记录

通用分页函数 split

分页|函数 // 分页显示:[1]... [<<] - [<] [9] [10] [11] [12] [13] [14] [15] [16] [>] - [>>] ...[232]// url Format: ./list.php?page= ; system will add the Pagenum after the Url automaticly// $Id: split_page.php,v 1.1.1.1 2002/08/24 14:26:41 hightma

asp通用分页函数,自动输出数据库列名、内容

分页|函数|数据|数据库 '自动输出数据库列名.内容并分页通用函数 [非常精典]'只需要更改数据库连接代码,即可输入完整的表格内容信息,调用代码如下: <%Function cutPage(sqlStr,Conn,dateNums,pageNums,URLs)'利用ADO分页的函数Dim sql,Cn,dateNum,pageNum,URL,rsDateSql=Trim(sqlStr) '获得sql语句.Set Cn=Conn '获得数据对象dateNum=Cint(dateNums) '获得每

两个PHP通用分页函数

//输入查询语句,数据库名,数据库连接,当前页号,链接字符串,列表条数,显示上下页导航链接function getpagenav($sql,$dbname,$db,$page,$link,$pagelistnum){//////////////////////////////////////////////////////////////////////////////* 通用PHP翻页函数                                                     

asp文章通用分页函数

<% '------------------------------------------------------------ '------------------------------------------------------------ CLASS pagination  PUBLIC pageSize    '每页显示多少记录  PUBLIC absolutePage   '当前页   PUBLIC baseURL    '要跳转的页面的URL  PUBLIC baseQuer

JSP通用高大上分页代码(超管用)_JSP编程

先给大家展示下分页效果,如果亲们还很满意请参考以下代码. 在超链接中要保留参数 当使用多条件查询后,然后在点击第2 页时,这个第2页超链接没有条件了,所以会丢失条件,所以我们需要在页面上的所有链接都要保留条件! 我们要把条件以一个字符串的形式保存到PageBean的url中!这个任务交给Servlet! pagebean package cn.itcast.cstm.domain; import java.util.List; public class PageBean<T> { privat