简单的分页实现

1。 在说之前,我把这简单一词,归类为无脑,也就是不考虑程序运行效率和与数据库交互的数据达到最优。

2. 说到分页肯定就想到hql,sql中的limit<pageNo,pageSize>,no no no 我就随便讲讲用其他的方法来实现分页,不用limit

不多说,看代码:

//获取全记录列表。看到这就知道毫无效率可言,如果取得列表长期不变的话,还可以考虑存入缓存...哈哈
List<DynamicMsg> all_list = DynamicMsgService.getInstance().getTeamMsg(cid);
//工具类分页---原理就是利用List自带一个subList方法,是不是很无语呢? List
<DynamicMsg> ldm = PageHelper.trunListByStart(all_list==null?new ArrayList<DynamicMsg>():all_list , curpage-1 , pageSize);
//这一点不用多说都明白吧,拿size整除pageSize然后验证是否有余数
int totalpage = PageHelper.totalPage(all_list==null? 0 :all_list.size() , pageSize);

PageHelper工具类

public class PageHelper {
  // 拿到第几页多少条数据
public static List trunList(List list,int page,int pnum){ int start = (page-1)*pnum; int end = start+pnum; if(list.size()>end) return list.subList(start,end); else if(list.size()>start) return list.subList(start,list.size()); else return list; }
// 取出自定义条数记录的list
public static List trunListByStart(List list,int start,int end){ if(list==null) return null; else if(list.size()>end) return list.subList(start,end); else if(list.size()>start) return list.subList(start,list.size()); else return list; }
  //总页数
public static int totalPage(int total,int pnum){ if (total < pnum) { return 1; } else { return (total/pnum + (total%pnum==0?0:1)); } }

  //分页 页码 public static int[] getShowPageNum(int totalpage,int pageNo,int showNum){ int[] se=new int[2]; se[0]=0;se[1]=0; if (totalpage>0 && pageNo>0) { int tmpNum = pageNo - showNum / 2; int start = 1 + tmpNum; int end = showNum + tmpNum; if (start < 1) { end = end + (1 - start); start = 1; if (end > totalpage) { end = totalpage; } } if (end > totalpage) { start = start - (end - totalpage); end = totalpage; if (start < 1) { start = 1; } } se[0]=start; se[1]=end; } return se; } }

 

JSP页面 页码显示  精髓所在啊....               上一页 ... 2 3 4 5 6 7 8 9 ... 下一页 

<a href="javascript:go(<%=curpage-1%>)" class="a1">上一页</a>
                         <%
                             int se[]=PageHelper.getShowPageNum(totalpage,curpage,4);
                            if(se[0]>1){out.print(" ...");}for(int pi=se[0];pi<=se[1];pi++){if(pi==curpage){out.print(" <a href='javascript:;' class='se'>"+pi+"</a>");}else{out.print(" <a href='javascript:go("+pi+")'>"+pi+"</a>");}    }
                            if(totalpage>se[1]){out.print("  ... ");}%> 
                             <a href="javascript:go(<%=curpage+1%>)" class="a2">下一页</a>
                            <script type="text/javascript">
                                function go(page){
                                    if(page<1){
                                        alert("已到首页");return;
                                    }
                                    if(page><%=totalpage%>){
                                        alert("已到尾页");return;
                                    }
                                    if(<%=curpage%>==page){
                                        alert("当前页即是");return;
                                    }
                                    var url = "/team/team-dynamic.jsp?page="+page;location.href = url;}
                            </script>

 

转载于:https://www.cnblogs.com/xmaomao/p/3375815.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值