主要写了一个Java类 里面装着两个方法 一个查询数据 还有 一个页面算法 用的时候直接调用就好了 要注意的是 页面调用时 要给两个方法传入 以下三个值: String tmp = request.getParameter(“curPage”); //获取url上的页码 String sql = “SELECT * FROM XXXXXXX”; String url = “index.jsp?curPage=”; //设置跳转时的url
paging.java
import java.sql.ResultSet; import DateBase.DBHelper; import sun.jkernel.StandaloneMessageDigest; public class paging { public static int pagesize = 10;//一页显示数据数 public static int shownum = 5;//显示页码数 public static int totalPages;//总页数 public static int curPage;//当前页页码 public static String getpagedate(String sql, String cpage){ //cpage为页码获取到的当前页码 String result = ""; try{ DBHelper db = null; ResultSet rs = null; db = new DBHelper(sql); rs = db.pst.executeQuery(); rs.last(); int size = rs.getRow(); if(cpage==null){ cpage="1"; } curPage = Integer.parseInt(cpage); totalPages = (size%pagesize==0)?(size/pagesize):(size/pagesize+1); if(curPage>=totalPages) curPage = totalPages; boolean flag = rs.absolute((curPage-1)*pagesize+1); int count = 0; do{ if(count>=pagesize)break; int id = rs.getInt(1); String name = rs.getString(2); String email = rs.getString(3); String leavel = rs.getString(4); count++; result += "<tr>"; result += "<td width='5%'>"+id+"</td>"; result += "<td width='5%'>"+name+"</td>"; result += "<td width='5%'>"+email+"</td>"; result += "<td width='5%'>"+leavel+"</td>"; result += "</tr>"; }while(rs.next()); rs.close(); db.close(); } catch(Exception e){ e.printStackTrace(); } return result; } public static String getpageString(String url){ String htmlString = ""; //最后要返回的String(包含首页、上一页、下一页、末页) String result = ""; //储存循环时获取的页码html //当前页页码小于1时 当前页页码为1 if(curPage<1){ curPage = 1; }else{ curPage = curPage; } //当前页页码大于总页数时 当前页页码为总页数 if(curPage>totalPages){ curPage = totalPages; }else{ curPage = curPage; } //计算开始页码 int startnum = curPage - (shownum / 2); if(startnum<1){ startnum = 1; }else{ startnum = startnum; } //计算结束页码 int endnum = curPage + (shownum / 2); if(endnum>totalPages){ endnum = totalPages; }else{ endnum = endnum; } //当前显示的页码个数不够最大页码数,在进行左右调整 int curnum = endnum - startnum + 1; //左调整 if( (curnum<shownum) && (startnum>1) ){ startnum = startnum - (shownum - curnum); if(startnum<1){ startnum = 1; }else{ startnum = startnum; } curnum = endnum - startnum + 1; } //右调整 if( (curnum<shownum) && (endnum<totalPages) ){ endnum = endnum + (shownum - curnum); if(endnum>totalPages){ endnum = totalPages; }else{ endnum = endnum; } } //首页 上一页(第一页时 上一页按钮不跳转) htmlString += "<a href = index.jsp?curPage=1>首页 </a>"; if(curPage>1){ htmlString += "<a href = "+url+(curPage-1)+" >上一页 </a>"; }else{ htmlString += "<a href = '' >上一页 </a>"; } //页码 for(int i = startnum; i<=endnum; i++){ if(i==curPage){ result += "<a > "+curPage +" </a>"; }else{ result += "<a href = "+url+i+" > "+i+" </a>"; } } htmlString += result; //尾页 下一页(最后一页时 下一页按钮不跳转) if(curPage<endnum){ htmlString += "<a href = "+url+(curPage+1)+" > 下一页</a>"; }else{ htmlString += "<a href = '' > 下一页</a>"; } htmlString += "<a href = index.jsp?curPage="+totalPages+"> 末页</a>"; htmlString += "第"+curPage+"页/共"+totalPages+"页"; return htmlString; } }index.jsp
<%@ page contentType="text/html" pageEncoding="UTF-8" language="java"%> <%@ page import="java.sql.*,DateBase.DBHelper"%> <%@ page import="page.paging"%> <% String tmp = request.getParameter("curPage"); //获取url上的页码 String sql = "SELECT * FROM users order by id"; String url = "index.jsp?curPage="; //设置跳转时的url %> <html> <head> <title>paging</title> </head> <body> <!-- date start --> <table border="1" spacing="2" style="text-align:center;width:100%;"> <%=paging.getpagedate(sql, tmp)%> </table> <!-- date end --> <!-- pagecount start --> <div style="text-align:center;width:100%;bottom: 15px;position:absolute;"> <%=paging.getpageString(url)%> </div> <!-- pagecount end --> </body> </html>DBHelper.java
public DBHelper(String sql) { try { Class.forName(name);//指定连接类型 conn = DriverManager.getConnection(url, user, password);//获取连接 pst = conn.prepareStatement(sql);//准备执行语句 } catch (Exception e) { e.printStackTrace(); } }DB的话主要就这部分 有什么不清楚的 可以看
http://blog.csdn.net/oyy527/article/details/52523849
DB表:
运行效果:
附件: http://download.csdn.net/detail/qq_22778717/9630627