获得数据库中一共有几条记录, 我们要用它来计算一共要分几 页。
计算方法是 count / 5 + 1,比如现在有 39 条记录,39 / 5 + 1 = 8, 一共分 8 页。 经过 BeanServlet.java 的处理,request 里有三个变量,list 保存当前页面显 示的结果,pageNo 代表当前页码,count 代表数据库中一共有多少条记录,这三 个变量会在 query.jsp 中作为原始数据显示最终的结果。
<% SimpleDateFormat format = new SimpleDateFormat("yyyy 年 MM 月 dd 日 "yyyy "); List list = (List) request.getAttribute("list" "list"); "list" if (list != null &;&; list.size() != 0) { for (int i = 0; i < list.size(); i++) { int Bean bean = (Bean) list.get(i); %> "> "> <%=bean.getId()%> | <%=bean.getId()%> | <%=bean.getTitle()%> | <%=format.format(bean.getAddDate())%> |
<% } } else { %> colspan="3">没有数据 ">没有数据 没有数据 |
<% } %> 循环显示 list 中当前页面的数据并不是新鲜事物, 我们只是判断了 list 是否存 在,list 里是否有数据,如果这两个条件不符合,就显示“没有数据”作为提 示。 下面是重头戏了,仔细研究一下如何使用 pageNo(当前页码)和 count(数据总 数)显示出分页工具栏,虽然只是进行简单的四则运算,但要是平常不注意训练 算法,想一次写好也不容易。 分页栏部分的代码如下:
首先我们从 request 中取得 pageNo (当前页码) count 和 (数据总数) 两个变量, 为了下面计算简便先用它俩计算出总页数 int pageCount = count / 5 + 1; 。 if (pageNo == 1) { %>
[第一页] [上一页] "unuse" <% } else { %>
[第一页] "?pageNo=1"
">[上一 "?pageNo=<%=pageNo 页] <% } %>
这段代码生成“[第一页] [上一页]”,如果 pageNo == 1 说明当前页已经是第 一页了,这时既不需要[第一页]这个链接,也不需要[上一页]了。对应的“[下 一页] [最后一页]”处理方法与之类似,只是判断条件要写成 pageNo == pageCount,判断是否已经是最后一页了。 <% for (int i = 1; i <= pageCount; i++) {
if (i == pageNo) { %>
<%=i%> <% } else { %>
<%=i%> <% } } %>
中间页码部分直接使用循环就能输出来,循环从 i = 1 开始直到 i <= 8,最后 就是我们看到的 1,2,3,4,5,6,7,8。既然 pageNo 是从 1 开始算的,我们这里就 也从 i = 1 起步了。如果在 i == pageNo 的时候,说明这是当前页,不需要链接, 再加上一个 class="currentPage"突出显示。
这个 select 下拉选择框的实现与上面相似,循环一下,遇到 i == pageNo 的时 候就输出一个 selected 默认显示到 select 里,在选中想跳转的页码,点击下面 的 go 按钮提交,跳转的效果也前面的超链接相同。 范例在 15-01。