效果:
前提:
项目已经创建完成,数据库已经创建完成,数据表中有数据。
jsp整体的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>系统页面</title>
</head>
<body>
<center>
<%
//定义4个分页用到的变量
int pageSize = 3;//每页显示的记录数
int pageNow = 1;//当前显示的页码
int rowCount = 0;//总记录数
int pageCount = 0;//总页数,通过pageSize和rowCount计算的
//接收用户点击的页码 并 对上定义的数据进行接收修改
String r_pageNow = request.getParameter("pageNow");
if(r_pageNow!=null){
//确保接收到用户传递的页码,通过超链接传递的
pageNow = Integer.parseInt(r_pageNow);
}
//查询得到rowCount
Class.forName("com.mysql.jdbc.Driver");
//获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/usermassagesystemmodel1", "root",
"root");
//创建连接库
Statement st = conn.createStatement();
//查
ResultSet rs = st.executeQuery("select count(*) from users;");
if (rs.next()) {
rowCount = rs.getInt(1);//rs查到的数据只有一行一列,此处可直接去列标
}
//计算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
//查询需要显示的记录
int limitL = (pageNow-1)*pageSize;
String sql="select * from users limit "+limitL+","+pageSize+"";
rs = st.executeQuery(sql);
%>
<table border="1">
<thead>
<tr>
<th>id</th>
<th>账号</th>
<th>密码</th>
<th>邮箱</th>
<th>等级</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<%while(rs.next()){%>
<tr>
<td><%=rs.getString("id") %></td>
<td><%=rs.getString("username") %></td>
<td><%=rs.getString("password") %></td>
<td><%=rs.getString("email") %></td>
<td><%=rs.getString("level") %></td>
<td><a href="">查看</a> <a href="">修改</a> <a href="">删除</a></td>
</tr>
<%} %>
</tbody>
</table>
<%
if(pageNow!=1){
out.print("<a href='welcome.jsp?pageNow=1'>[首页]</a>");
out.print("<a href='welcome.jsp?pageNow="+(pageNow-1)+"'>[上一页]</a>");
}
//显示分页
for(int i=1; i<=pageCount;i++){
out.println("<a href='welcome.jsp?pageNow="+i+"'>["+i+"]</a>");
}
if(pageNow<pageCount){
out.print("<a href='welcome.jsp?pageNow="+(pageNow+1)+"'>[下一页]</a>");
out.print("<a href='welcome.jsp?pageNow="+pageCount+"'>[尾页]</a>");
}
%>
</center>
</body>
</html>
1.分页需要用到的变量:
int pageSize = 3;//每页显示的记录数
int pageNow = 1;//当前显示的页码
int rowCount = 0;//总记录数
int pageCount = 0;//总页数,通过pageSize和rowCount计算的
2.连接mysql查询数据表中的数据
//查询得到rowCount
Class.forName("com.mysql.jdbc.Driver");
//获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/usermassagesystemmodel1", "root",
"root");
//创建连接库
Statement st = conn.createStatement();
//查
ResultSet rs = st.executeQuery("select count(*) from users;");
if (rs.next()) {
rowCount = rs.getInt(1);//rs查到的数据只有一行一列,此处可直接去列标
}
3. mysql分页语句
//查询需要显示的记录
int limitL = (pageNow-1)*pageSize;
String sql="select * from users limit "+limitL+","+pageSize+"";
4.计算页码
//计算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
5.打印出分页的样式
<%
if(pageNow!=1){
out.print("<a href='welcome.jsp?pageNow=1'>[首页]</a>");
out.print("<a href='welcome.jsp?pageNow="+(pageNow-1)+"'>[上一页]</a>");
}
//显示分页
for(int i=1; i<=pageCount;i++){
out.println("<a href='welcome.jsp?pageNow="+i+"'>["+i+"]</a>");
}
if(pageNow<pageCount){
out.print("<a href='welcome.jsp?pageNow="+(pageNow+1)+"'>[下一页]</a>");
out.print("<a href='welcome.jsp?pageNow="+pageCount+"'>[尾页]</a>");
}
%>