之前一直对分页功能很排斥,因为觉得实现很简单,所以自己也没有写过分页功能。
前天面试的时候被问到了这个问题,一脸懵逼。今天好好整理了一下,做了一个比较简单而且粗糙的分页。
原理:利用mysql语句的limit来进行限制。
比如:select * from bookinfo limit 0,5
这个意思就是说,在boolinfo表中从0条记录中开始查找5条记录。
从这个思路进行下去,首先存储20条记录,
创建一个jsp页面
<%@page import="java.sql.ResultSet"%>
<%@page import="com.mysql.jdbc.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="com.hu.dao.JDBCbean"%>
<!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>
<%
int nextPage;
int pageSize=5;
String curpage = request.getParameter("nextPage");
if (curpage == null||Integer.valueOf(curpage ) < 0) {
nextPage = 0;
} else {
nextPage = Integer.valueOf(request.getParameter("nextPage"));
}
JDBCbean jdbcbean = new JDBCbean();
ResultSet rs = jdbcbean.executQuery("select * from bookinfo limit " + nextPage + ","+pageSize+"");
%>
<table border="1" align="center" cellpadding="10">
<tr>
<th>书名</th>
<th>作者</th>
<th>价格</th>
</tr>
<%
while (rs.next()) {
out.print("<tr>");
out.print("<td>" + rs.getString(1) + "</td>");
out.print("<td>" + rs.getString(2) + "</td>");
out.print("<td>" + rs.getString(3) + "</td>");
out.print("</tr>");
}
%>
<%
jdbcbean.close();
%>
</table>
<div align="center">
总页数:<%=jdbcbean.getTotalPage()/pageSize %>
 当前页数:<%=nextPage % (jdbcbean.getTotalPage()/pageSize)+1%>
<a href="index.jsp?nextPage=0">首页</a>
<a href="index.jsp?nextPage=<%=nextPage - 5%>">上一页</a>
<a href="index.jsp?nextPage=<%=nextPage + 5%>">下一页</a>
<a href="index.jsp">尾页</a>
</div>
</body>
</html>
下面说一下几个要获取的值:
总页数=总页数就是总的数据条数 ÷ 每页显示的条数
但是要注意,如果总数据数除不尽,还需要进行一个判断。
if(totalRows%pageSize==0){
totalPage=totalRows/pageSzie;
}
else{
totalPage=totalRows/pageSzie+1;
}
下一页就是改变limit的两个参数值,前面的从第几条记录开始要加上每页显示的记录总数。这里也要进行判断,如果到末页了,需要提示。