`
hzhui
  • 浏览: 61264 次
  • 性别: Icon_minigender_1
  • 来自: 广东河源
最近访客 更多访客>>
社区版块
存档分类

分享一个分页算法

    博客分类:
  • J2EE
阅读更多
/**
* 分页算法
*/
package cn.eshore.user.util;

public class PageBean {

private int currentPage = 1;// 当前页数

public int totalPages = 0;// 总页数

private int pageSize = 0;// 每页显示数

private int totalRows = 0;// 总数据数

private int startNum = 0;// 开始记录

private int nextPage = 0;// 下一页

private int previousPage = 0;// 上一页

private boolean hasNextPage = false;// 是否有下一页

private boolean hasPreviousPage = false;// 是否有前一页

public PageBean(int pageSize, int currentPage, int totalRows) {

this.pageSize = pageSize;
this.currentPage = currentPage;
this.totalRows = totalRows;

if ((totalRows % pageSize) == 0) {
totalPages = totalRows / pageSize;
} else {
totalPages = totalRows / pageSize + 1;
}

if (currentPage >= totalPages) {
hasNextPage = false;
currentPage = totalPages;
} else {
hasNextPage = true;
}

if (currentPage <= 1) {
hasPreviousPage = false;
currentPage = 1;
} else {
hasPreviousPage = true;
}

startNum = (currentPage - 1) * pageSize;

nextPage = currentPage + 1;

if (nextPage >= totalPages) {
nextPage = totalPages;
}

previousPage = currentPage - 1;

if (previousPage <= 1) {
previousPage = 1;
}

}

public boolean isHasNextPage() {

return hasNextPage;

}

public boolean isHasPreviousPage() {

return hasPreviousPage;

}

/**
* @return the nextPage
*/
public int getNextPage() {
return nextPage;
}

/**
* @param nextPage
*            the nextPage to set
*/
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}

/**
* @return the previousPage
*/
public int getPreviousPage() {
return previousPage;
}

/**
* @param previousPage
*            the previousPage to set
*/
public void setPreviousPage(int previousPage) {
this.previousPage = previousPage;
}

/**
* @return the currentPage
*/
public int getCurrentPage() {
return currentPage;
}

/**
* @param currentPage
*            the currentPage to set
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

/**
* @return the pageSize
*/
public int getPageSize() {
return pageSize;
}

/**
* @param pageSize
*            the pageSize to set
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

/**
* @return the totalPages
*/
public int getTotalPages() {
return totalPages;
}

/**
* @param totalPages
*            the totalPages to set
*/
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}

/**
* @return the totalRows
*/
public int getTotalRows() {
return totalRows;
}

/**
* @param totalRows
*            the totalRows to set
*/
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}

/**
* @param hasNextPage
*            the hasNextPage to set
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}

/**
* @param hasPreviousPage
*            the hasPreviousPage to set
*/
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}

/**
* @return the startNum
*/
public int getStartNum() {
return startNum;
}

/**
* @param startNum
*            the startNum to set
*/
public void setStartNum(int startNum) {
this.startNum = startNum;
}
}

     如果你使用的是struts,那么你在调用这个PageBean分页算法之前,你得先取得对你所想要进行分页的数据的总记录数,然后你就实例化这个PageBean,之后你就可以通过get方法得到任何你想要的值。

package test;

import cn.eshore.user.util.PageBean;

public class Test extends DispatchAction{
   
        ......

        public ActionForward loadPageUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

.......
                  int pageSize = 5;
                 
                  String pageId = request.getParameter("pageId");
if (pageId == null || pageId.equals("")) {
pageId = "1";
}
int currentPage = Integer.parseInt(pageId);

                  //从服务层里得到用户的总记录数
int totalRows = userService.getTotalRows();

PageBean page = new PageBean(pageSize, currentPage, totalRows);

....
}
}


╔──────────╗
│    hzhui         │
│          专用章  │
╚─────────㊣╝
分享到:
评论
8 楼 大老鼠上的小草原 2007-07-26  
我感觉用mysql存储分页 太局限了
7 楼 garyt 2007-07-25  
算总数是最费时的
6 楼 piaochunzhi 2007-04-10  
这东西 很老了 !
5 楼 hzhui 2007-04-08  
我赞同fhjxp的说法,算法相信大家都能够做出来,大不了花多点时间就是啦!可是一个分页的好坏,很大方面是看你的界面设计是如何的。一个好的分页,不仅要具备一盘分页的全部功能,而且还要有一个很好的界面视觉效果。
4 楼 fhjxp 2007-04-07  
觉得分页的重点不是算法,而是设计
3 楼 hzhui 2007-04-06  
是javaBean里的分页。怎么了,你想要存储过程里面分页吗?
2 楼 lijie250 2007-03-31  
我正在找这方面,我不知道是用MYSQL的存储过程分页
还是用JAVABEAN分页
大家说下~~~
1 楼 hzhui 2007-03-11  
   收藏一下,可能将来对大家有用。也可到我的博客查看更多其它方面的技术文章。感谢大家。

相关推荐

    JS分页源代码,非常详细

    JScript.js可能是一个外部JavaScript文件,包含了具体的分页算法和逻辑。在JavaScript中,实现分页功能可能涉及以下几个关键知识点: 1. 计算总页数:根据数据总数和每页显示的条目数来计算出总的页数。 2. 创建...

    各种排序算法java实现

    ITEYE是一个知名的IT技术社区,博主通常会在这样的平台上分享他们的编程经验和技术理解。 标签“源码”和“工具”提示我们这篇文章可能包含实际的Java源代码示例,并且这些代码可能被设计为可复用的工具或库,帮助...

    基于控件的分页组件

    描述中提到的链接指向了一篇博客文章,虽然具体内容没有给出,但从链接我们可以推测博主分享的是关于如何设计或实现一个基于控件的分页组件的教程或者技术分享。这种文章通常会涵盖分页组件的基本原理,如如何计算总...

    分页式每日精选经验分享发布微信社交小程序源码.zip

    分页式每日精选经验分享发布微信社交小程序源码是一套基于微信小程序开发的代码资源,主要功能是实现一个能够展示每日精选经验分享的社交平台。这个小程序的核心特性可能包括以下几个方面: 1. **分页加载**:在...

    JS实现的分页

    参考提供的链接[https://penghuaiyi.iteye.com/blog/793449],博主penghuaiyi分享了一种JavaScript实现分页的方法,包括了创建分页HTML结构、计算页码、绑定事件和更新数据等步骤。具体代码细节可在此链接查看。 6...

    fso.rar_asp fso_fso a

    综合以上分析,这个资源包提供了ASP环境下的FSO分页组件源码,对于需要处理大量数据并优化分页算法的开发者来说,这是一个有价值的参考资料。通过学习和使用这套组件,开发者可以更好地管理服务器上的文件,并实现更...

    C#开发基于FreeSql多库分布式事务、跨库查询、跨库分页查询、跨库增删改等功能实现源码+项目说明+sln.zip

    通过时间分片定位、事件委托、分页算法实现跨库分页查询 1.appsettings.json配置 2.初始化数据库 3.获取IFreeSql操作对象 5.跨库分页查询 6. 跨库增删改 7.跨库并行查询(不分页) 8.跨库ToOne查询 9.跨库Any查询 ...

    elasticsearch_18实用知识库分享

    Elasticsearch 是一个基于 Lucene 的搜索引擎,提供了强大的搜索功能和灵活的数据处理能力。本资源库分享了 Elasticsearch 的多个方面的知识点,涵盖了基本概念、查询优化、安全策略、Java 集成、数据处理等多个方面...

    jQ导出PDF自动分页打印特效代码

    总结来说,"jQ导出PDF自动分页打印特效代码"是一个使用jQuery和Canvas技术解决HTML到PDF转换问题的实用工具,其核心在于自动分页算法,能够确保内容在PDF中适当地分页显示。用户可以借助提供的文件和说明,将这个...

    一些常用代码的总结,如分页等等,文件下载上传等

    这里,`request.files`是一个MultiDict对象,包含了所有上传的文件。通过键(`'file'`)获取到上传的文件对象,然后保存到服务器。 **代码总结** 代码总结是开发者积累经验的重要方式,它有助于记忆、分享和复用...

    图解SLAM分享,gmapping魔改的图解教程

    总的来说,这个教程提供了一个全面的视角来理解2D激光SLAM以及gmapping算法。通过图文并茂的方式,即使是SLAM领域的初学者也能快速上手。同时,源码的分享使得学习者有机会实践并改进算法,进一步提升自己的技能。

    PHP实现在数据库百万条数据中随机获取20条记录的方法

    今天偶然想起来一个坑爹数据,如:PHP取百万条数据中随机20条记录,当时就用的算法。 1.先统计统计数据库多少条记录(这个做个数据缓存,如1小时重新统计一次), 2.根据总条数,随机1次,1次性取出20条记录(当然这...

    mybatis插件pageHelper实现分页效果

    今天,我们将详细介绍如何使用PageHelper插件实现分页效果,并分享一个实际项目中的应用经验。 MyBatis插件PageHelper简介 PageHelper是一个MyBatis插件,用于实现分页查询功能。它提供了一个简单的API,允许...

    FIFO.rar_Visual C++ fifo_fifo_存储管理 fifo_请求页式存储管理

    Pudn.com是一个在线技术分享平台,常常有程序员分享代码和学习资料。 在实际应用中,虽然FIFO算法简单,但其性能并不总是最优。因为FIFO可能导致频繁使用的页面(即“热”页面)过早被替换,这种现象被称为Belady's...

    PHP实例开发源码——爱迪达搞笑视频分享站php版 2.01.zip

    【标题】"PHP实例开发源码——爱迪达搞笑视频分享站php版 2.01.zip" 提供的是一个基于PHP的视频分享网站的源代码,版本为2.01。这个项目可能是为了帮助开发者了解如何使用PHP构建一个功能齐全、用户可以上传和分享...

    LitePager,文字传呼机.zip

    1. 分页算法:LitePager的核心功能是根据每页显示的数据量来分割数据集,实现动态加载和切换页面。 2. JavaScript或jQuery:作为Web前端的组件,LitePager很可能基于JavaScript或jQuery实现,用于处理用户交互和更新...

    C#报表操作--设置每页打印20行实例源码--最低分分享

    C#提供了多种分页方式,例如SQL Server的ROW_NUMBER()函数、ADO.NET的Paging支持或者自定义的分页算法。分页时,需要指定每页的记录数(这里是20行)和当前页数,然后只加载当前页的数据到报表中。 3. 报表设计:...

    基于Android的中国历史分享APP的设计与实现源码数据库.zip

    本项目聚焦于中国历史领域,旨在设计并实现一个基于Android系统的中国历史分享APP,以满足用户对历史知识的需求。该项目采用Java编程语言进行开发,并结合SpringBoot框架,构建后端服务,同时考虑了微信小程序的集成...

    个人网上日记本

    【个人网上日记本】是一个基于SpringMVC框架、MySQL数据库的在线日记系统,它提供了丰富的功能,包括后台分页、富文本编辑、附件与文件上传以及时间选择器等。这个项目不仅适合个人使用,同时也适合作为毕业设计的...

    操作系统选择填空题分享.pdf

    - **进程状态**:系统中有n个进程,等待队列中进程的个数最多为n-1个,因为至少有一个进程在运行。 - **原语**:在操作系统中,不可中断执行的操作称为原语,它是操作系统实现并发控制的基础。 - **进程调度**:...

Global site tag (gtag.js) - Google Analytics