1.分页需求对象创建
1.分页需求对象
数据总数:前台显示需要
当前页号:涉及数据库搜索计算
总页号:前台显示+涉及前台翻页计算
页面条目数:涉及和数据库搜索计算
数据库内容:没有这东西的话你做什么分页- -
public class PageResult {
//数据总数
private long totalCount;
//当前页号
private int pageNo;
//总页号
private int totalPageCount;
//页面条目数
private int pageSize;
//数据库内容
private List items;
2.关于当前页号与总页数计算
if (totalCount != 0) {
int tem = (int) (totalCount/pageSize);
this.totalPageCount = (totalCount%pageSize==0)?tem:(tem+1);
this.pageNo = pageNo;
}else{
this.pageNo = 0;
}
页号:如果没有数据赋0处理
总页数:编程语言思想:如果(数据总数/页面条目数)有余数要在结果后+1
3.后台hibernate数据搜索思想
- 从当前页号计算出从哪一条数据开始获取setFirstResult实现。
因为之前默认页号0,如果页号<1,设置回1,至少会有一页
第一条数据位置=(页号-1)*也数据量。 - 获取页面条目数的数据量setMaxResults实现。
if(pageNo < 1) pageNo =1;
q.setFirstResult((pageNo-1)*pageSize);
q.setMaxResults(pageSize);
List items = q.list();
4.获取总数据量
利用函数+uniqueResult()方法降低服务器开销
long totalCount = (Long) q2.uniqueResult();
语句:"SELECT COUNT(*) "+fromClause+whereClause;
2.前台动态引入分页栏
数据显示页面
<jsp:include page="/common/pageNavigator.jsp"></jsp:include>
分页栏
s:if判断:
- 没有数据不显示分页栏
- 翻页判断,当前页面>1才显示上一页按钮,当前页面<总页数才显示下一页按钮
<s:if test="pageResult.totalCount > 0">
<table width="100%" class="pageDown" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="right">
总共<s:property value="pageResult.totalCount"/>条记录,当前第 <s:property value="pageResult.pageNo"/> 页,共<s:property value="pageResult.totalPageCount"/> 页
<s:if test="pageResult.pageNo > 1">
<a href="javascript:doGoPage(<s:property value="pageResult.pageNo-1"/>)">上一页</a>
</s:if>
<s:if test="pageResult.pageNo < pageResult.totalPageCount">
<a href="javascript:doGoPage(<s:property value="pageResult.pageNo+1"/>)">下一页</a>
</s:if>
到 <input id="pageNo" name="pageNo" type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
max="<s:property value="pageResult.totalPageCount"/>" value="<s:property value="pageResult.pageNo"/>" />
</td>
</tr>
</table>
</s:if>
js跳转方法
pageNo在传值时根据需求+-
<script type="text/javascript">
function doGoPage(pageNo){
document.getElementById('pageNo').value = pageNo;
document.forms[0].action = list_url;
document.forms[0].submit();
}
</script>