日期:2014-05-16  浏览次数:20396 次

jsp servlet 简单分页实现

分页简单的说可以是把后端数据访问层中特定的数据展示给前段显示层的用户,不同的数据库有分页不同的语法支持,如Oracle的rownum,mysql的limit

?

抛开数据库的特性不谈,对于Dao只需要知道从“from”到“to”条数据,前段传给后端的核心参数则是需要“第几页”的数据,后端再把“处理”后特定的数据返回给前端,前端的页面负责数据显示

?

分页需要知道查询符合条件的总记录数totalRecorders,以及每页多少条记录pageSize

?

?由此可以计算得出总页数 totalPages

int totalPages = totalRecorderss/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数

?

?后端查询得到数据通常以List集合或Json字符串返回,前端则根据不同的返回数据进行处理

?

?

?通常会将前段页面分页逻辑抽象为一个专有的jsp,负责处理相关逻辑,而需要分页的页面则直接动态包含此页面,并将需要的参数传个页面

<jsp:include page="page.jsp">
	<jsp:param name="url" value="xxx.action?sign=xxx" />			
</jsp:include>

?

?

?假设这个负责分页逻辑处理的页面为page.jsp,源码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<form action="${param.url}&" method="get" id="navigatorForm">
	<a href="${param.url}&pageNumber=1">首页</a> 
	<c:if test="${pageNumber>1}">
		<a href="${param.url}&pageNumber=${pageNumber-1}">上一页</a>
	</c:if>
	<c:if test="${pageNumber<totalPages}">
		<a href="${param.url}&pageNumber=${pageNumber+1}">下一页</a>
	</c:if> 
	<a href="${param.url}&pageNumber=${totalPages}">末页</a>
	第${pageNumber }页
	共${totalPages}页
</form>

page.jsp负责判断是否有下一页hasNextPage(),是否有上一页hasPriviousPage();

效果图?



?

?

参考:http://jihao.iteye.com/blog/253280??http://raychase.iteye.com/blog/1697883

?

?