主要写了一个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的话主要就这部分 有什么不清楚的 可以看
DB表:
运行效果: