Javaweb分页
分页的基本方法有数据库分页、mybatisplus分页、pageHelper、jsp手写分页,这里介绍最简单(麻烦)的jsp手写分页,不涉及复杂的操作,仅仅是前端逻辑。
- 连接数据库,获得结果集
<%
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8";
String username = "root";
String password = "root";
try {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//构建连接
Connection connection = DriverManager.getConnection(url, username, password);
//sql语句
String sql = "select * from jdbc.users";
//构建编译对象(结果集设置可操作)
PreparedStatement preparedStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//执行sql
ResultSet resultSet = preparedStatement.executeQuery();
//遍历查询结果
%>
- 构建表格,填入数据
<table align="center" width="80%" border=1 cellspacing="0">
<tr>
<td>编 号:</td>
<td>用户名:</td>
<td>密 码:</td>
<td>邮 箱:</td>
<td>日 期:</td>
<td colspan="2">操 作:</td>
</tr>
<%
String str = (String) request.getParameter("page");
if (str == null)
str = "0";
int pagesize = 5;//页面大小
resultSet.last();//结果集游标指向最后
int recordCount = resultSet.getRow();//最后一行的行号,即总行数
int maxPage = (recordCount % pagesize == 0) ? (recordCount / pagesize) : (recordCount / pagesize + 1);//总页数
int currentPage = Integer.parseInt(str);//当前页
if (currentPage < 1)//修正当前页
currentPage = 1;
else if (currentPage > maxPage)
currentPage = maxPage;
resultSet.absolute((currentPage - 1) * pagesize + 1);//游标移动到当前页的首行
for (int i = 1; i <= pagesize; i++) {//填入数据
%>
<tr>
<td><%=resultSet.getObject("id")%></td>
<td><%=resultSet.getObject("name")%></td>
<td><%=resultSet.getObject("password")%></td>
<td><%=resultSet.getObject("email")%></td>
<td><%=resultSet.getObject("today")%></td>
<td><a href="Delete.jsp?id=<%=resultSet.getObject("id")%>">删除</a></td>
<td><a
href="Update.jsp?id=<%=resultSet.getObject("id")%>&username=<%=resultSet.getObject("name")%>&password=<%=resultSet.getObject("password")%>&email=<%=resultSet.getObject("email")%>"
onclick="return linkClick(this)"> 修改</a></td>
</tr>
<%
if (!resultSet.next())//游标下移
break;
}
%>
</table>
- 制作分页栏,关闭数据库连接
<br>
<hr>
<div style="margin-left:540px">
当前页数:[<%=currentPage%>/<%=maxPage%>]
<%
if (currentPage > 1) {
%>
<a href="Show.jsp?page=1">第一页</a> <a
href="Show.jsp?page=<%=currentPage - 1%>">上一页</a>
<%
}
if (currentPage < maxPage) {
%>
<a href="Show.jsp?page=<%=currentPage + 1%>">下一页</a> <a
href="Show.jsp?page=<%=maxPage%>">最后一页</a>
<%
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
%>
</div>