首先说明一下分页的几个变量:
pageNow
表示当前是第几页(由用户决定);
pageSize
表示每页显示几条记录(由程序决定);
pageCount
表示共有多少页(计算得出)
rowCount 表示共有多少记录(从数据库查询可得出)
pageCount的计算方法:
①
pageCount = rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize + 1;
②
pageCount = (rowCount-1)/pageSize+1;
③
if(rowCount%pageSize==0)
pageCount=rowCount/pageSize;
else
pageCount=rowCount/pageSize+1;
rowCount的查询语句:
ps = conn.prepareStatement(
"select count(*) from user"
);
颜色部分为mysql查询总共有多少记录的语句
rs = ps.executeQuery();
rs.next(); 一定要执行以下next()方法,不然取不到记录数量!
rowCount=rs.getInt(1);
下面是分页的核心部分:
String sql = " select * from user order by id limit "+(pageNow-
1)*pageSize+","+pageSize+
""
;
该sql语句是用来执行分页操作的mysql语句,具体格式为:
select * from 表名 order by 字段名 limit number1 , number2;
(number1表示从第几个记录开始 不包括
number1本身;
number2表示从
number1往下数几个
)
ps = conn.prepareStatement(sql);
rs=ps.executeQuery();
out.println("<table border=1 width=500>"); 创建一个表格
out.println("<tr><th>id</th><th>用户名</th><th>密码</th></tr>");
while(rs.next())
{
out.println("<tr><td>"+rs.getString(1)+"</td><td>"+
rs.getString(2)+"</td><td>"+rs.getString(3)+"</td></tr>");
}
out.println("</table>");
out.print("<a href='/UserManager1/ManageUsers?pageNow="+(pageNow==1?pageNow:(pageNow-1))+"'>上一页</a>");
该语句是显示 上一页 操作,里面运用了三目运算来计算是否当前页面是否为第一页,如果为第一页,则跳转仍停留在本页面;如果不为第一页,则执行 上一页 跳转 (页面内部跳转:把值pageNow通过?传递给
request.getParameter(
"pageNow"
)
)
for(int i=1;i<=pageCount;i++)
{
out.print("<a href='/UserManager1/ManageUsers?pageNow="+i+"'><"+i+"></a>");
该语句显示页码
}
out.print("<a href='/UserManager1/ManageUsers?pageNow="+(pageNow==pageCount?pageNow:(pageNow+1))+"'>下一页</a>");
该语句是显示 下一页 操作,里面运用了三目运算来计算是否当前页面是否为最后一页,如果为
最后
一页,则跳转仍停留在本页面;如果不为
最后
一页,则执行 下一页 跳转 (页面内部跳转:把值pageNow通过?传递给
request.getParameter(
"pageNow"
)
)
out.println(" "+"当前页"+pageNow+"/"+"总页数"+pageCount);