jsp mysql 原生分页的制作

效果:

前提:

项目已经创建完成,数据库已经创建完成,数据表中有数据。

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>");
		}
	%>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张帅三代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值