簡單的分頁實現

1。 在說以前,我把這簡單一詞,歸類爲無腦,也就是不考慮程序運行效率和與數據庫交互的數據達到最優。javascript

2. 說到分頁確定就想到hql,sql中的limit<pageNo,pageSize>,no no no 我就隨便講講用其餘的方法來實現分頁,不用limitjava

很少說,看代碼:sql

//獲取全記錄列表。看到這就知道毫無效率可言,若是取得列表長期不變的話,還能夠考慮存入緩存...哈哈
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>
相關文章
相關標籤/搜索