- 浏览: 5780649 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 2077项目中用到了DetachedCriteria,顺便记下来 De ... -
hibernate学习13之悲观锁与乐观锁
2010-01-28 11:55 1959悲观锁Pessimistic 悲观锁 ... -
hibernate学习12之Collection(集合)映射
2010-01-28 11:09 1976set list array map 的映射。 集合映射会发 ... -
hibernate学习11之composite(复合)主键映射
2010-01-28 10:50 2167复合主键映射可以看作是组件映射的一个特例. <!D ... -
hibernate学习10之component(组件)映射
2010-01-28 10:34 1803在hibernate中,component是某个实体的逻辑组成 ... -
hibernate学习9之extends(继承)映射
2010-01-28 10:19 2973hibernate.cfg.xml: <!DOCTY ... -
hibernate学习8之lazy策略
2010-01-27 17:44 1896hibernate lazy策略可以使用在: * <c ... -
hibernate学习7之many-to-many双向关联
2010-01-27 16:54 1835Hibernate.cfg.xml配置同前一节。 imp ... -
hibernate学习6之many-to-many单向关联
2010-01-27 16:40 2394<!DOCTYPE hibernate-config ... -
hibernate学习5之one-to-many双向关联
2010-01-27 16:10 2276一对多双向关联映射: * 在一一端的集合上使用<key ... -
hibernate学习4之one-to-many单向关联(不推荐)
2010-01-27 15:47 4750一对多和多对一的映射策略是一样的,只是站的角度不同. 多对一 ... -
hibernate学习3之one-to-one单向外键关联
2010-01-27 14:55 3067one-to-one关联其实是many-to-one的一种特殊 ... -
hibernate学习2之many-to-one
2010-01-27 14:37 1856public class Group { privat ... -
hibernate学习1之基础工具
2010-01-27 14:21 1752//根据映射文件生成数据库表 import org.hib ... -
Hibernate批量删除出现sql异常Connection is read-only. Queries leading ... are not allowed
2009-12-23 17:48 9102在做批量删除时出现: Connection is read- ... -
根据用户权限,动态显示用户菜单
2009-09-17 14:48 9845用户权限userPermission,比如[1][2][3][ ... -
数据插入不成功的问题
2009-09-03 13:25 1710检查表的字段名中是否有sql关键字,如use,count,ma ... -
Hibernate的批量更新和删除
2009-08-16 22:03 2090批量更新是指在一个事 ... -
利用myeclipse 生成Hibernate Mapping文件时出现No entries available的解决办法
2009-07-30 23:26 16747在hibernate中,每个数据表对应的其实是一个实体类,每个 ...
相关推荐
分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码...
PHP内容分页,新闻内容分页代码,分页代码
asp.net 实现分页代码 分页代码 分页代码 分页代码 分页代码 分页代码 分页代码
asp.net AJAX分页 分页代码asp.net AJAX分页 分页代码asp.net AJAX分页 分页代码asp.net AJAX分页 分页代码
纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码
一个从数据库中读出数据的分页代码.....
分页 ssh分页 重用分页代码 一个工程里只需要一个公用的分页类
js table设置表格行tr分页代码简单的分页代码下载
java分页代码下载
JSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.docJSP分页代码.doc
ASP分页代码都得熟悉,JS分页代码你熟悉吗?精心集的分页代码。
请求加分页代码
sql存储过程分页代码,sql存储过程分页代码 sql存储过程分页代码,sql存储过程分页代码
仿百度分页代码|谷歌分页代码范例,请大家做个参考
STRUTS2+HIBERNATE分页 实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码
用JS实现分页技术,可以对文本进行分页的,也不知道在那里下载到得,一直收藏的。现在贡献给CSDN里的同行。 放到body中就好了。
ASP通用分页代码,非常实用易懂!值得鉴定与学习
repeater分页代码(直接可用)repeater分页代码(直接可用)
仿google分页实例代码,很好的PHP分页代码。
asp论坛分页数字分页代码,挺实用的一个小工具代码,希望对大家有帮助啦。。。