分页
一、什么是分页?(WHAT)
分页是在前台中把从数据库中查询出来的大量数据分成多页来显示的一种方式。(数据展现的一种方式)
二、为什么需要分页?(WHY)
对于用户的一次查询,通常都汲及到数据库中的许多数据,这个数据通常可能是成千上万,如果用户一次性把成千上万的数据查询出来展现在页面而没有使用分页的话会有
以下两个问题:其一,从系统的角度来说是一个效率问题,一次性查询出成千上万条数据对于数据库和服务器来说是一个很重的负担。其二,从用户的角度来说,一次性把那么
多的数据展现在用户面前,用户虽然查询出来但不一定会全部看完这些数据,可能也就是会看数据某一部分。基于以上两个问题的原因,我们应该使用分页,用户进行查询时,
我们仅查询一部分的数据(即在前台中的一页数据),当用户需要查询更多数据时才再次向服务器发出请求查询下一页的数据,查其所需这样就解决了以上两个问题,这是是我们
为什么要使用分页的原因。
三、分页在哪里使用?(WHERE)
分页对于系统的中所有查询都可以使用,对于一个查询中汲及到大量数据时最好使用分页。
四、如何使用分页?(HOW)
对于分页的使用分为前台和后台两部分。
客户端:
(1)在客户端前台需要显示的分页信息有哪些?
总记录数、当前页、总页数、每页显示记录数
(2)进行分页的操作有哪些?
首页、上一页、下一页、尾页、具体页
(3)在分页时进行后台交互时要传递的信息有哪些?
数据查询起始索引:offset 或 页码:page
服务器端:
(1)进行分页查询时需要哪些信息?
要进行数据库获取的起始索引(即要从哪里开始获取数据):offset
每页显示的记录数(即要获取多少条记录):pagesize
(2)如何进行数据查询?
在后台中得到offset、pagesize两个参数后拼装成相应的SQL后向数据库中发出得到相应的数据,SQL如何写,要依赖于具体的数据库。
(3)查询后向服务器端前台反馈一些什么信息。
其一:查询出来的数据集合。
其二:数据的总记录数。
使用pager-taglib实现分页:
(1)pager-taglib是什么?
pager-taglib是apache的一个开源分页组件,可以到apache的网站下载。
(2)如何使用?
1、加入pager-taglib.jar包。
2、引入相应的标签。
<%@ taglib prefix="pag" uri="http://jsptags.com/tags/navigation/pager" %>
3、使用相应标签进行分页处理。
pg:pager【这个标签用来设置分页的总体参数】重要参数说明:
url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
items:总记录数,pager标签正是根据这个值来计算分页参数的
maxPageItems:每页显示的行数,默认为10
maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
pg:first【第一页的标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 首页第一行的索引值
lastItem - 首页最后一行的索引值
pg:pre【上一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 前页第一行的索引值
lastItem - 前页最后一行的索引值
pg:next【下一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 下页第一行的索引值
lastItem - 下页最后一行的索引值
pg:last重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 尾页第一行的索引值
lastItem - 尾页最后一行的索引值
pg:pages【这个标签用来循环输出页码信息】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - pageNumber这个页码指定的那一页的第一行的索引值
lastItem - pageNumber这个页码指定的那一页的最后一行的索引值
使用示例(DEMO):
前台JSP:
<table border="1" width="100%" borderColor=#666666 cellSpacing=0 cellPadding=0 width="95%" border=1>
<tr>
<td align="center"><b>ID</b></td>
<td align="center"><b>商品名称</b></td>
<td align="center"><b>商品描述</b></td>
<td align="center"><b>商品价格</b></td>
<td align="center"><b>商品数量</b></td>
</tr>
<c:forEach items="${pagerModel.datas}" var="product">
<tr>
<td align="center">${product.id }</td>
<td>${product.name }</td>
<td>${product.remark }</td>
<td>${product.price }</td>
<td>${product.count }</td>
</tr>
</c:forEach>
</table>
<!—分页组件标签-->
<pag:pager items="${pagerModel.total}" export="currentPageNumber=pageNumber" url="pager.do">
<pag:first>
<a href="${pageUrl }">首页</a>
</pag:first>
<pag:prev>
<a href="${pageUrl }">前页</a>
</pag:prev>
<pag:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl }">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pag:pages>
<pag:next>
<a href="${pageUrl }">后页</a>
</pag:next>
<pag:last>
<a href="${pageUrl }">尾页</a>
</pag:last>
</pag:pager>
对应的Action:
public class PagerAction extends Action {
//商品管理DAO
private ProductDao productDao = new ProductDao() ;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获得查询起始索引
String offset = request.getParameter("pager.offset") ;
if(offset==null || "".equals(offset)){
offset = "0" ;
}
PagerModel pagerModel = new PagerModel() ;
//得到数据总记录数
int count = productDao.getRecordCount() ;
pagerModel.setTotal(count) ;
//分页查询商品
List products = productDao.queryAll(Integer.parseInt(offset), 10) ;
pagerModel.setDatas(products) ;
request.setAttribute("pagerModel", pagerModel) ;
return mapping.findForward("pager_tag") ;
}
}
/**
* 分页数据模型类
* @author lsgsunny
*
* Date 2009-7-16
*/
public class PagerModel {
private List datas;
private int total;
public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
主要原理:
根据所给的总记录数和每页显示记录数,帮我们算出每一页查询的起始索引值,并且附加到地址栏后,当我们点击分页的操作时,可以从服务器端得到查询起始索引值,
服务器端可以根据这个查询起始索引和每页显示记录数(这个数自己在后台进行定义,但一定要和前台标签定义的一致)。
具体描述:
用户点击查询进入到Action中把数据从数据库中把第一页数据查询出来,并且查出总记录数,JSP显示组件生成页面时,利用分页组件的标签,根据总记录数和预先定
义好的每页显示记录数,进行每一页的查询起始索引计算,并且把计算好的索引附加到URL上,比如我们点击下一页操作时,会把下一页查询起始索引值传到服务器端,接收
到参数后,进行数据查询,数据查询出来后,转到JSP,分页组件的标签会重新计算下一页这个操作对应的起始索引值,并且附加到URL,前台可以看到索引值跟上次不再一样。
分享到:
相关推荐
本教程将深入探讨10种不同的JS Web分页效果,这些效果设计精良,适用于现代网站的需求。 1. **基础分页**:这是最简单的分页实现,通过数字按钮展示当前页码和总页数,用户可以通过点击按钮切换页面。关键在于计算...
"Web分页控件例子Demo"是一个示例项目,旨在展示如何在网页应用中实现高效且用户友好的分页功能。下面我们将深入探讨Web分页控件的相关知识点,并结合给出的文件名进行分析。 1. **分页的基本概念**: 分页是将...
本篇将深入探讨C# Web分页控件的使用,以及如何在实际项目中实现它。 一、ASP.NET中的分页控件 ASP.NET提供了多种分页控件,其中最常见的有GridView、ListView和DataList。这些控件都内置了分页功能,可以方便地...
本篇文章将深入探讨“简单web分页实现”的概念、原理以及实现方法。 首先,我们要理解分页的基本原理。分页通常涉及到两个主要方面:前端显示和后端数据处理。前端负责展示页面上的导航元素(如页码),并根据用户...
本压缩包中的"web分页控件(代码)超级简单的"提供了这样一个基础功能的实现,旨在帮助开发者快速搭建具有分页功能的页面。 分页控件的主要作用是将大量数据分块展示,避免一次性加载所有数据导致页面响应慢或内存...
ASP.NET Web 分页控件是开发Web应用时常用的一种组件,尤其在处理大量数据展示时,它可以有效地提高页面性能和用户体验。在这个主题中,我们将深入探讨如何使用ASP.NET中的分页功能,以及如何针对datagrid、repeater...
本主题将深入探讨“web分页代码”的实现,涵盖关键概念、技术和实践策略。 一、分页原理 1. 分页的基本思想是将数据集拆分成多个部分,每个部分称为一个“页”,用户可以逐页浏览,而不是一次性加载所有数据。这在...
实现Web分页的方法有很多,包括使用服务器端分页和客户端分页。服务器端分页意味着每次用户切换页面时,服务器都会根据请求的页码和每页记录数返回对应的数据。而客户端分页则是在前端JavaScript中完成,通常利用...
综上所述,通过合理地使用`Window.print()`方法结合CSS样式控制和JavaScript逻辑,我们可以实现一个强大的Web分页打印功能。确保对各种浏览器进行充分测试,并根据需要进行优化,以提供最佳用户体验。
本篇将围绕"WEB分页(C#)"这个主题,结合个人的想法和网上的一些资料,深入探讨分页的实现方式、优化策略以及相关的C#代码示例。 首先,我们要理解分页的基本概念。当网页需要显示的数据量过大,一次性加载全部...
在JAVA Web开发中,分页功能是常见...总的来说,JAVA Web分页实例代码提供了实际操作的参考,有助于开发者掌握分页的实现原理,提升开发效率。通过学习和实践这个例子,你可以更好地理解如何在实际项目中应用分页技术。
### Java Web 分页设计知识点详解 #### 一、分页设计概述 在Java Web开发中,当需要展示大量数据时,通常会采用分页技术来提高用户体验和减轻服务器负担。分页可以有效地控制每次加载的数据量,使得用户界面更加...
MVC设计模式下常见Web分页方案存在一些不足,针对降低耦合性和提高复用性提出了改进方案,并通过在数据层引入Hibernate框架,服务层引入Bridge桥接模式,表示层引入Struts框架对改进方案加以实现。
【Java Web分页项目】是基于Java和JSP技术实现的一个Web应用程序,主要目标是解决在Web应用中处理大量数据时的效率问题。在数据库驱动的Web应用中,一次性加载所有数据可能导致页面加载慢,用户体验下降,甚至服务器...
学习到的一个分页源码,共享给大家: Repeater分页 DataList分页 Url分页 使用Url重写技术 Url逆向分页 N层结构应用 使用XML文件数据源 图片浏览示例 使用AccessDataSource 使用SqlDataSource 使用ObjectDataSource ...
Java Web分页管理器是一种用于处理大量数据分页显示的技术,尤其在与微软数据库如SQL Server配合使用时,能够高效地提升用户体验。在Web应用程序中,分页是必不可少的功能,尤其是在展示诸如用户列表、订单历史或者...
本文将详细介绍如何实现一个简单且易于理解的Web分页功能,同时讲解如何处理页码超出显示范围的情况,即使用省略号代替部分页码。 首先,我们要明白分页的基本概念。分页通常涉及到两个关键参数:当前页码(current...
本文将深入探讨24款超实用的WEB分页代码,这些代码可以帮助开发者快速实现高效、美观的分页功能。 1. 分页的基本原理:分页主要是通过JavaScript、CSS和HTML三者结合来实现的。JavaScript处理数据逻辑,CSS负责样式...
本文将探讨在Oracle数据库中实现Web分页的有效方法。 首先,一个理想的分页方案应该满足两个主要要求:1) 减少数据库处理的数据量;2) 减小数据库与Web应用服务器之间传输的数据量。这两个要求对于性能优化至关重要...
本篇文章将深入探讨Web分页的实现原理和方法。 首先,我们需要理解分页的基本概念。在Web应用中,如果一个页面需要展示的数据过多,一次性加载所有数据可能会导致页面响应缓慢,甚至崩溃。分页就是解决这个问题的...