• 简单的分页实现


    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>
  • 相关阅读:
    现阶段学习窘境总结(2013年6月21日-至今)
    MvcPager 分页控件
    JS 实现PDF文件打印
    json和Jsonp 使用总结(1)
    实战篇之存储过程的使用
    ASP.NET MVC5 之 客户端实现文件的下载
    WMI 技术
    PowerDesigner 的使用教程
    Rose
    对路径 obj 文件夹访问被拒绝
  • 原文地址:https://www.cnblogs.com/xmaomao/p/3375815.html
Copyright © 2020-2023  润新知