分页程序实际很简单,下面我介绍一下自己写的,可能很烂
1.构造传递DTO。代码如下:
import java.util.List;
public class PaginationDto {
private int totalCount;
private int currentPage;
private int totalPages;
private int indexPage = 1;
private int prePage;
private List nums;
private int nextPage;
private int lastPage;
private List data;
//生成getter/setter方法
}
2.构造分页逻辑。代码如下:
public class PaginationBean {
public PaginationBean() {}
//构造导航信息
public PaginationDto buildNavgation(int currentPage,boolean byType,String typeId) {
PaginationDto dto = new PaginationDto();
List nums = new ArrayList();
//查找数据总条数
int totalCount = findTotalCount();
//每页20条记录
int totalPages = totalCount / 20;
//计算总页数
int tp = totalCount % 20;
if (tp != 0) {
totalPages += 1;
}
int indexPage = 1;
int prePage = -1;
if (currentPage == 1) {
prePage = -1;
} else {
prePage = currentPage - 1;
}
int lastPage = totalPages;
int nextPage = -1;
if (currentPage < lastPage) {
nextPage = currentPage + 1;
} else {
nextPage = -1;
}
if (currentPage == 1) {
if (totalPages <= 20) {
nums.clear();
for (int i = 0; i < totalPages; i++) {
nums.add(String.valueOf(i + 1));
}
} else {
nums.clear();
for (int i = 0; i < 20; i++) {
nums.add(String.valueOf(i + 1));
}
}
} else {
if (currentPage >= 20) {
int moveNum = 2;// currentPage 20;
int begin = currentPage - moveNum;
int end = currentPage + 20 - moveNum;
if (end > totalPages) {
end = totalPages;
}
nums.clear();
for (int i = begin; i <= end; i++) {
nums.add(i + "");
}
} else {
nums.clear();
if (currentPage <= totalPages) {
nums.clear();
for (int i = 0; i < totalPages; i++) {
nums.add(String.valueOf(i + 1));
}
} else {
nums.clear();
for (int i = 0; i < 20; i++) {
nums.add(String.valueOf(i + 1));
}
}
}
}
//计算取数据的开始和结束位置
int currentCountE = currentPage * 20 - 1;
int currentCountB = currentCountE - 19;
if (currentCountE > totalCount) {
currentCountE = totalCount;
}
//根据当前页码计算要取得数据
List result = findLimit(currentCountB, currentCountE);
dto.setCurrentPage(currentPage);
dto.setTotalPages(totalPages);
dto.setData(result);
dto.setIndexPage(indexPage);
dto.setLastPage(lastPage);
dto.setNextPage(nextPage);
dto.setNums(nums);
dto.setPrePage(prePage);
dto.setTotalCount(totalCount);
dto.setTotalPages(totalPages);
dto.setData(result);
return dto;
}
public int findTotalCount() {
//查询总记录数
}
public List findLimit(int down, int up) {
//这里给出的是ORACLE的专用分页代码
//你的SQL就是SELECT name,password from yourtable
String sql = "select * from ( select row_.*, rownum rownum_ from ( ";
sql+=" SELECT name,password from yourtable";
sql+=" ) row_ where rownum <=?) where rownum_ >?";
}}
3.jsp代码
<div id="nav" align="center">
共计${dto.totalCount}条记录 ;当前位置${dto.currentPage}/${dto.totalPages}
<a href="yourManage.do?method=page&cp=1&id=${id}">【首页】</a>
<c:if test="${dto.prePage!=-1}">
<a href="yourManage.do?method=page&cp=${dto.prePage}&id=${id}">【上一页】</a>
</c:if>
<c:if test="${dto.prePage<0}">
【上一页】
</c:if>
<c:forEach items="${dto.nums}" var="obj">
<a href="yourManage.do?method=page&cp=${obj}&id=${id}">${obj}</a>
</c:forEach>
<c:if test="${dto.nextPage==-1}">
【下一页】
</c:if>
<c:if test="${dto.nextPage!=-1}">
<a href="yourManage.do?method=page&cp=${dto.currentPage}&id=${id}">【下一页】</a>
</c:if>
<a href="yourManage.do?method=page&cp=${dto.lastPage}&id=${id}">【末页】</a>
</div>
4.action代码
int currentPage = Integer.parseInt(request.getParameter("cp"));
String id = request.getParameter("id");
if(id==null||id.equals("")){
PaginationBean pb = new PaginationBean();
List types = logic.groupType("-1",false);
request.setAttribute("types", types);
PaginationDto dto = pb.buildNavgation(currentPage,false,"");
request.setAttribute("dto",dto);
}else{
PaginationBean pb = new PaginationBean();
List types = logic.groupType("-1",false);
request.setAttribute("types", types);
request.setAttribute("id", id);
PaginationDto dto = pb.buildNavgation(currentPage,true,id);
request.setAttribute("dto",dto);
}
return mapping.findForward("index");
分享到:
相关推荐
在Java编程语言中,分页程序是用于处理大量数据并将其以较小、可管理的块(页面)显示给用户的一种常见技术。这尤其适用于数据库查询返回的结果集过大,一次性加载到内存中会消耗大量资源或者导致性能下降的情况。在...
php分页程序 小结
**PHP通用分页程序** 在Web开发中,数据量大的时候,为了提高用户体验,通常会使用分页技术来展示信息。PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,因此,PHP通用分页程序是开发人员常用的一种工具...
本项目提供的就是一个基于Struts框架的服务器端分页程序,它利用了Struts的标签库(Tag Library)来实现这一功能。 首先,我们来看`PageBean.java`,这是一个核心的分页类。这个类通常会包含以下关键属性: 1. `...
标题提到的“牛人写的分页程序,分页标签”很可能是指一个高效且易用的分页解决方案,可能是基于Java开发的,特别是利用了自定义标签(Custom Tags)这一特性。 Java自定义标签(Custom Tags)是JSP(JavaServer ...
现在我们来深入探讨如何在ASP中实现分页程序。 1. **基础概念** - **服务器端脚本**:ASP运行在服务器上,处理请求后返回HTML到客户端浏览器,使得处理逻辑与显示分离。 - **分页**:将大量数据分割成若干小部分...
下面,我们将深入探讨Winform分页程序的设计原理、实现方法以及相关源码解析。 首先,理解分页的基本概念。分页是将大量数据分成多个部分(页)进行显示,用户可以通过导航按钮在这些页面之间切换。在Winform中,...
后来, 主要是在微博应用出现后, 由于其信息变化很快, 而其特性为基于时间线增加数据, 这样, 基本的分页程序不能再满足需求了: a) 当获取下一页时, 数据集可能已经发生了很多变化, 翻页随时都可能导致数据重复或跳跃...
本项目提供了一个基于Java后端和MySQL数据库的分页程序示例,方便开发者在构建Web应用时参考和使用。 首先,我们需要理解分页的基本概念。分页是将数据库中的大量记录分成若干页显示,用户可以逐页浏览,而不是一次...
【PHP显示分页程序】是实现网页数据分页显示的关键技术,主要目的是为了优化用户体验,避免一次性加载过多数据导致页面加载缓慢或者用户滚动浏览不便。在这个PHP程序中,通过一个自定义函数`page()`实现了这一功能。...
在ASP中,分页程序是常见的网页数据展示技术,它允许用户浏览大量数据时,一次加载一部分,提高网页加载速度并提升用户体验。在这个场景中,"ASP分页程序!很不错的"指的是一个用ASP编写的高效、实用的分页解决方案...
本资源“分页程序c#.rar”显然提供了一个使用C#编程语言实现的分页解决方案。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows平台和Web应用开发,尤其是与.NET Framework或.NET Core框架结合使用。 分页...
本教程将深入讲解如何使用C#编写一个不依赖存储过程的简单分页程序。虽然标题提及了存储过程,但我们将主要关注无存储过程的解决方案,因为这种方法允许更高的灵活性和更好的数据库无关性。 1. **理解分页概念**: ...
在这个特定的程序中,"MFC的ListControl控件分页程序"实现了对ListControl控件的分页功能,使得大量数据的显示更加高效和用户友好。 首先,我们来理解ListControl控件。在MFC中,ListControl通常对应于Windows API...
自己写的一个分页程序 互相交流学习 #region 定义分页的一些常量 int pageSize = 8;//每页显示信息数量 int pagesCount_view; // 用于提示用户关于页码的总数 int pagesCount_operte;//用于操作分页关于页码的...
下面,我们将详细探讨这个分页程序的关键知识点。 首先,理解分页的基本原理。分页是通过限制每次从数据库中获取的数据量来实现的。例如,每一页显示10条记录,第一页就获取1到10的记录,第二页获取11到20的记录,...
jsp+javabean 分页程序jsp+javabean 分页程序jsp+javabean 分页程序jsp+javabean 分页程序jsp+javabean 分页程序jsp+javabean 分页程序jsp+javabean 分页程序 简单实用供初学者参考
标题"ASP 百万数据分页程序"和描述表明,这个压缩包中包含了一些用于实现高效数据分页的ASP类文件。以下是对这些知识点的详细说明: 1. **数据分页原理**:数据分页是将大量数据分成多个小部分(页)来显示,每次只...
在IT行业中,分页程序是一种常见的数据处理技术,特别是在网页应用和数据库操作中。它能够有效地管理和展示大量的数据,使得用户可以逐页浏览,而不会一次性加载过多内容导致页面响应变慢或者内存压力过大。本分页...
很早帮朋友写了分页程序,主要由于考虑到他的应用数据量很大 程序元旦时已完成,也懒得发出来 大体思想:分页的核心思想采用 Iterator模式,每次从数据库中取定量的数据块 其中block和pageCount是两个不同的概念,...