- 浏览: 5819677 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
PaginationSupport.java,这个类网上有,我把它加强了一下,看下面
在jsp中的用法:
上面的首页,上一页,下一页,尾页我使用了submit提交,其实也可以用<a href="...">
只是我一开始做的时候只有首页,上一页,下一页,尾页四个button,没有考虑中间的1,2,3,4,5,6....所以有些混乱,勉强看吧。
下面的是在action中用法:
这里要传递的是startIndex的值,所以form中需要定义int startIndex的getter,setter
这个分页我个人认为比较好了,代码比较优美。
类似如下效果:
总记录 108 条 首页 上一页 1 2 3 4 5 ...10 下一页 尾页 共有10页,当前是第1页
import java.util.ArrayList; import java.util.List; public class PaginationSupport { public static int PAGESIZE = 10; private int pageSize = PAGESIZE; private List items; private int totalCount; private int[] indexes = new int[0]; private int startIndex = 0; private int lastStartIndex; public PaginationSupport(){ } public PaginationSupport(List items, int totalCount) { setPageSize(PAGESIZE); setTotalCount(totalCount); setItems(items); setStartIndex(0); } public PaginationSupport(List items, int totalCount, int startIndex) { setPageSize(PAGESIZE); setTotalCount(totalCount); setItems(items); setStartIndex(startIndex); } public PaginationSupport(List items, int totalCount, int pageSize, int startIndex) { setPageSize(pageSize); setTotalCount(totalCount); setItems(items); setStartIndex(startIndex); } public List getItems() { return items; } public void setItems(List items) { this.items = items; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { if (totalCount > 0) { this.totalCount = totalCount; int count = totalCount / pageSize; if (totalCount % pageSize > 0) count++; indexes = new int[count]; for (int i = 0; i < count; i++) { indexes[i] = pageSize * i; } } else { this.totalCount = 0; } } public int[] getIndexes() { return indexes; } public void setIndexes(int[] indexes) { this.indexes = indexes; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { if (totalCount <= 0) this.startIndex = 0; else if (startIndex >= totalCount) this.startIndex = indexes[indexes.length - 1]; else if (startIndex < 0) this.startIndex = 0; else { this.startIndex = indexes[startIndex / pageSize]; } } public int getNextIndex() { int nextIndex = getStartIndex() + pageSize; if (nextIndex >= totalCount) return getStartIndex(); else return nextIndex; } public int getPreviousIndex() { int previousIndex = getStartIndex() - pageSize; if (previousIndex < 0) return 0; else return previousIndex; } public int getLastIndex(){ int[] indexes = this.getIndexes(); if(indexes != null && indexes.length >0){ lastStartIndex = indexes[indexes.length-1]; } return lastStartIndex; } // 一共多少页 public int getPages(){ if(getTotalCount()%pageSize==0){ return getTotalCount()/pageSize; } return (getTotalCount()/pageSize)+1; } //当前第几页 public int getCurrentPage(){ return (getStartIndex()/pageSize)+1; } //感谢dengyin2000提供如下算法 /** * 记录显示的页码组 * @param totalPages * @param currentPage * @return */ public ArrayList<Integer> page(int totalPages, int currentPage) { int adjacents = 3;//这个参数可以调ArrayList的长度,试试就知道了 ArrayList<Integer> result = new ArrayList<Integer>(); if (totalPages < (5 + (adjacents * 2))){ // not enough links to make it worth breaking up writeNumberedLinks(1, totalPages, result); }else{ if ((totalPages - (adjacents * 2) > currentPage) && (currentPage > (adjacents * 2))){ // in the middle writeNumberedLinks(1, 1, result); writeElipsis(result); writeNumberedLinks(currentPage - adjacents - 1, currentPage + adjacents, result); writeElipsis(result); writeNumberedLinks(totalPages, totalPages, result); }else if (currentPage < (totalPages / 2)){ writeNumberedLinks(1, 3 + (adjacents * 2), result); writeElipsis(result); writeNumberedLinks(totalPages, totalPages, result); }else{ // at the end writeNumberedLinks(1, 1, result); writeElipsis(result); writeNumberedLinks(totalPages - (2 + (adjacents * 2)), totalPages, result); } } return result; } /** * @param result * */ private void writeElipsis(ArrayList<Integer> result) { result.add(-1);//-1是用来打点的 } /** * @param i * @param lastIndex * @param result */ private void writeNumberedLinks(int i, int lastIndex, ArrayList<Integer> result) { for (int d=i; d <= lastIndex; d++) { result.add(d); } } }
在jsp中的用法:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html:hidden property="startIndex"/> <table width="100%" border="0" cellpadding="2" cellspacing="0" bordercolor="#4DB0E7" class="TableMain"> <tr bgcolor="#FFFFFF"> <td width="17%">总记录 ${ requestScope.pagination.totalCount } 条 <input title="首页" class="menuList" name="1" type="submit" onClick="this.document.forms[0].startIndex.value='0';" value="首 页"> <input title="上一页" class="menuList" name="1" type="submit" onClick="this.document.forms[0].startIndex.value=${ requestScope.pagination.previousIndex };" value="上一页"> <c:forEach var="i" items="${requestScope.pages}"> <c:choose> <c:when test="${i==-1}" > ... </c:when> <c:when test="${i==requestScope.pagination.currentPage}" > <a href="userManage.portal?action=listUser&page=${ i }" target="mainFrame" style="color:red;">${ i }</a> </c:when> <c:otherwise> <a href="userManage.portal?action=listUser&page=${ i }" target="mainFrame" >${ i }</a> </c:otherwise> </c:choose> </c:forEach> <input title="下一页" class="menuList" name="1" type="submit" onClick="this.document.forms[0].startIndex.value=${ requestScope.pagination.nextIndex };" value="下一页"> <input title="尾页" class="menuList" name="1" type="submit" onClick="this.document.forms[0].startIndex.value=${ requestScope.pagination.lastIndex };" value="尾页"> 共有${ requestScope.pagination.pages }页,当前是第${ requestScope.pagination.currentPage }页 </td> </tr> </table>
上面的首页,上一页,下一页,尾页我使用了submit提交,其实也可以用<a href="...">
只是我一开始做的时候只有首页,上一页,下一页,尾页四个button,没有考虑中间的1,2,3,4,5,6....所以有些混乱,勉强看吧。
下面的是在action中用法:
String action=request.getParameter("action"); if("listUser".equals(action)){ String page=request.getParameter("page"); if(page!=null){ int p=Integer.parseInt(page); form.setStartIndex((p-1)*Constant.PAGESIZE);//p总是从1开始,但记录从0开始,所以p-1 } PaginationSupport pagination=this.getBaseService().findPageByCriteria(detachedCriteria, Constant.PAGESIZE, form.getStartIndex());//该方法网上有,查一下 List list = pagination.getItems(); request.setAttribute("list", list); request.setAttribute("pagination", pagination); request.setAttribute("pages", pagination.page(pagination.getPages(), pagination.getCurrentPage())); return mapping.findForward("listUser"); }
这里要传递的是startIndex的值,所以form中需要定义int startIndex的getter,setter
这个分页我个人认为比较好了,代码比较优美。
类似如下效果:
总记录 108 条 首页 上一页 1 2 3 4 5 ...10 下一页 尾页 共有10页,当前是第1页
发表评论
-
DetachedCriteria查询实例
2010-07-20 15:52 2110项目中用到了DetachedCriteria,顺便记下来 De ... -
hibernate学习13之悲观锁与乐观锁
2010-01-28 11:55 2002悲观锁Pessimistic 悲观锁 ... -
hibernate学习12之Collection(集合)映射
2010-01-28 11:09 2013set list array map 的映射。 集合映射会发 ... -
hibernate学习11之composite(复合)主键映射
2010-01-28 10:50 2197复合主键映射可以看作是组件映射的一个特例. <!D ... -
hibernate学习10之component(组件)映射
2010-01-28 10:34 1841在hibernate中,component是某个实体的逻辑组成 ... -
hibernate学习9之extends(继承)映射
2010-01-28 10:19 3014hibernate.cfg.xml: <!DOCTY ... -
hibernate学习8之lazy策略
2010-01-27 17:44 1930hibernate lazy策略可以使用在: * <c ... -
hibernate学习7之many-to-many双向关联
2010-01-27 16:54 1866Hibernate.cfg.xml配置同前一节。 imp ... -
hibernate学习6之many-to-many单向关联
2010-01-27 16:40 2435<!DOCTYPE hibernate-config ... -
hibernate学习5之one-to-many双向关联
2010-01-27 16:10 2316一对多双向关联映射: * 在一一端的集合上使用<key ... -
hibernate学习4之one-to-many单向关联(不推荐)
2010-01-27 15:47 4788一对多和多对一的映射策略是一样的,只是站的角度不同. 多对一 ... -
hibernate学习3之one-to-one单向外键关联
2010-01-27 14:55 3107one-to-one关联其实是many-to-one的一种特殊 ... -
hibernate学习2之many-to-one
2010-01-27 14:37 1895public class Group { privat ... -
hibernate学习1之基础工具
2010-01-27 14:21 1794//根据映射文件生成数据库表 import org.hib ... -
Hibernate批量删除出现sql异常Connection is read-only. Queries leading ... are not allowed
2009-12-23 17:48 9146在做批量删除时出现: Connection is read- ... -
根据用户权限,动态显示用户菜单
2009-09-17 14:48 9886用户权限userPermission,比如[1][2][3][ ... -
数据插入不成功的问题
2009-09-03 13:25 1779检查表的字段名中是否有sql关键字,如use,count,ma ... -
Hibernate的批量更新和删除
2009-08-16 22:03 2137批量更新是指在一个事 ... -
利用myeclipse 生成Hibernate Mapping文件时出现No entries available的解决办法
2009-07-30 23:26 16790在hibernate中,每个数据表对应的其实是一个实体类,每个 ...
相关推荐
分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码...
PHP内容分页,新闻内容分页代码,分页代码
在这个场景中,"分页代码 重分页代码" 指的是在SSH框架下实现分页功能的代码,并且强调了代码的复用性,即在一个工程中只需要一个公共的分页类。 分页的目的是为了提高用户体验,避免一次性加载大量数据导致页面...
除了基本的分页功能外,还可以考虑增加以下功能来增强用户体验: - **自动跳转到指定页**:根据URL中的参数自动跳转到相应的页码。 - **加载更多按钮**:通过滚动到底部触发加载更多内容,而非传统的翻页方式。 - **...
在提供的代码片段中并未看到具体的分页导航实现,但在实际应用中,这部分是非常重要的,它允许用户通过点击不同的页码来查看不同的数据。 #### 四、代码优化建议 1. **安全性考虑**:使用`mysql_*`函数存在安全...
本示例提供的"JS+HTML分页代码"是一个利用JavaScript(JS)和超文本标记语言(HTML)实现的分页功能,主要包含了首页、前页、后页、尾页以及自定义分页页号的功能。 **HTML基础**: HTML是网页的基础,用于构建页面...
这个"asp论坛分页数字分页代码"是一个实用的小工具,可以帮助开发者快速实现论坛内容的分页显示。 首先,我们来理解一下分页的基本概念。分页是将大量数据分割成若干小块,每次只显示一部分,用户可以通过点击页码...
ASP通用分页代码是网页开发中的一个重要组成部分,特别是在处理大量数据需要分页显示的场景下。这个代码模块的目的是为了提高开发效率,实现代码的复用,并确保用户在浏览多页内容时能轻松导航。以下将详细介绍这个...
请求加分页代码
这篇内容将详细介绍10种经典的JS分页代码实现方法,帮助开发者理解和应用这些技术。 1. **基础HTML和CSS分页**:最简单的分页实现,通常结合HTML链接和CSS样式来创建分页条目。开发者需要计算总页数,然后创建相应...
Java万能分页代码是Java开发中常用的工具,尤其在处理大数据量的Web应用时,分页技术能够显著提升用户体验并优化服务器性能。这个3.0版本的分页代码库通常包含了一些经过优化的分页算法和接口,适用于各种场景,如...
本教程将深入探讨ASP.NET AJAX分页的相关知识点,以及如何编写分页代码。 1. **什么是ASP.NET AJAX分页?** ASP.NET AJAX分页是一种通过使用ASP.NET AJAX库(以前称为Atlas)实现的客户端分页方法。它利用...
本资源提供了一套非常优秀的Java分页代码,它旨在简化开发过程,使得开发者能够轻松地在应用程序中实现分页功能。 分页的基本原理是将大量的数据集分割成较小的部分,每次只加载一部分数据到内存中,用户可以逐页...
### 纯JS长文章分页代码解析 在网页开发中,为了提高用户体验及加载速度,经常需要将过长的文章内容进行分页处理。本文基于提供的文件内容,深入解析一个用纯JavaScript实现的文章分页代码。 #### 核心概念与功能 ...
### ASP数字分页代码解析与应用 #### 一、引言 在Web开发中,当数据量较大时,为了提高用户体验并减轻服务器负担,通常会采用分页技术来展示数据。ASP(Active Server Pages)是一种早期的服务器端脚本环境,可以...
根据提供的文件信息,我们可以分析出该段代码是用于实现基于Java技术的Web应用程序中的分页功能。虽然这里的代码示例采用的是ASP.NET的语法结构,但我们可以从中抽取出与Java分页相关的概念和技术要点,并结合Java...
标题与描述中的“仿百度分页代码 谷歌分页代码”主要涉及的是网站开发中常见的分页功能实现。在大数据量的处理场景下,为了提升用户体验和服务器性能,分页显示数据成为了一种常见且必要的技术手段。本文将详细解析...
在这个“ASP.NET分页代码”的主题中,我们将深入探讨如何在ASP.NET中实现分页功能。 1. 分页的基本原理 分页主要是通过限制在页面上显示的数据量来实现的。当用户请求一个页面时,服务器只返回当前页所需的数据,而...
本文将深入探讨24款超实用的WEB分页代码,这些代码可以帮助开发者快速实现高效、美观的分页功能。 1. 分页的基本原理:分页主要是通过JavaScript、CSS和HTML三者结合来实现的。JavaScript处理数据逻辑,CSS负责样式...
本文将深入讲解ASP分页通用代码的工作原理和使用方法,以及如何通过提供的`function.asp`和`调用实例.txt`文件进行实际应用。 首先,我们要理解分页的基本概念。分页是将一个大列表的数据分割成多个小部分,每次只...