学习目标:
1、掌握分页页面展示的逻辑
2、为根据业务需要灵活使用分页算法
学习过程:
有和后台的dao层的实现,那么页面显示就简单多,这个实现就很多元化了,这里我们使用简单一点的方式。
一、修改servlet
servlet需要解释前台传过来的当前页变量,并同时把分页对象传给页面展示,代码如下:
if (op == null || op.equals("list")) {
int cp=1;
String cpage=request.getParameter("cpage");
if(cpage!=null){
cp=Integer.parseInt(cpage);
}
// 查询
Page page=new Page();
page.setCurrentPage(cp);
List<User> users = userDao.getUserForPage(page);
request.setAttribute("users", users);
request.setAttribute("page", page);
request.getRequestDispatcher("listuser.jsp").forward(request,
response);
}
二、页面实现
打开listuser.jsp页面。在列表下面可以显示分页信息和点击上一页和下一页等超链接。为了让用户又更好的体验,在第一页时不能点击上一页,在最后一页是不能点击下一页,所这里写了一个条件判断:
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th height="25">序号</th>
<th>用户名</th>
<th>性别</th>
<th>基本操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users }" var="user" varStatus="status">
<tr>
<td>${status.index+1 }</td>
<td>${user.username }</td>
<td><c:choose>
<c:when test="${user.sex eq 1 }">男</c:when>
<c:otherwise>女</c:otherwise>
</c:choose></td>
<td><a href="admin/userServlet?op=delete&uid=${user.userId} "
onclick="return confirm('你真的要删除吗?')">删除</a> | <a
href="admin/userServlet?op=toupdate&uid=${user.userId}">修改</a></td>
</tr>
</c:forEach>
</tbody>
</table>
共有 ${page.itemCount } 条数据,每页显示${page.pageSize }条 当前是第
${page.currentPage } 页 ,共有 ${page.pageCount }页
<c:choose>
<c:when test="${page.currentPage>1 }">
<a href="admin/userServlet?op=list&cpage=${page.currentPage-1 }">上一页</a>
</c:when>
<c:otherwise>
<a>上一页</a>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${page.currentPage<page.pageCount }">
<a href="admin/userServlet?op=list&cpage=${page.currentPage+1 }">下一页</a>
</c:when>
<c:otherwise>
<a>下一页</a>
</c:otherwise>
</c:choose>