天天看點

Mysql+servlet實作分頁

使用方法看類的說明,使用的是servlet,在架構上使用的話自行修改一下吧。。。。。分頁語句使用的是Mysql的

package com.turing.util;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.turing.dao.DaoImpl;
import com.turing.dao.IDao;

/**
 * Servlet中用于分頁的類
 * 使用在類中使用了dao的查詢方法,使用的時候如果dao的查詢語句報錯請換成自己的
 * 使用方法:将page對象建立出來調用pageFenye的方法四個參數在方法中有說明
 *          方法中已經将分頁的list存入作用域中,分頁的按鈕字元串已經存入作用域中    
 * 在jsp中直接使用${pageStr}就可以
 * jsp中<c:forEach items="${list}" var="map" varStatus="i">直接使用list
 * */
public class page {

         private List records;// 記錄
         private Long totalrecordnumber;// 總記錄數
         private Integer startindex;// 第一頁
         private Integer endindex;// 最後一頁
         private Integer totalpagenumber;// 總頁數
         private Integer currentpage;// 目前頁
         IDao dao=new DaoImpl();//使用的dao
        //獲得總頁數 顯示頁數 目前頁數 第一頁 最後一頁
         public void setIndex(int currentpage, int viewperpage, int totalpagenumber) {
          if (viewperpage >= totalpagenumber) {
           startindex = ;
           endindex = totalpagenumber;
          } else {
           if (currentpage <= viewperpage / ) {
            startindex = ;
            endindex = viewperpage;
           } else if ((currentpage + viewperpage / ) > totalpagenumber) {
            startindex = totalpagenumber - viewperpage + ;
            endindex = totalpagenumber;
           } else {
            startindex = currentpage - (viewperpage - ) / ;
            endindex = currentpage + viewperpage / ;
           }
          }
         }
        /**
         * return pageStr和list(分頁後的list已經存入作用域中)
         * 傳入參數:
         * sql:查詢的表的sql語句
         * maximum:每頁顯示多少條
         * viewperpage:可以顯示多少頁
         * */
        public void pageFenye(HttpServletRequest request, HttpServletResponse response,String sql,int maximum,int viewperpage) throws ClassNotFoundException, SQLException{
             // 目前是第幾頁
             String currentpageStr = request.getParameter("currentpage") == null ? "1" : request.getParameter("currentpage");
             int currentpage = Integer.parseInt(currentpageStr);
             // 每頁顯示多少條

             // 可以顯示多少頁
             //分頁查詢語句
             List<Map<String, Object>> listPage = dao.executeQueryForList(""+sql+" limit "+ (currentpage - ) * maximum + "," + maximum);
             //查詢全部
             List<Map<String, Object>> listAll = dao.executeQueryForList(sql);
             int count=listAll.size();
             this.records = listAll;
             this.totalrecordnumber = (long) count;
             this.currentpage = currentpage;
             totalpagenumber = (int) (totalrecordnumber % maximum ==  ? totalrecordnumber / maximum: totalrecordnumber / maximum + );//獲得總頁數
             setIndex(currentpage, viewperpage, totalpagenumber);

             String pageStr="  <div class=\"text-right\">總共"+listAll.size()+"條資料</div> "+
                            " <div class=\"btn btn-group\" style=\"display:flex;justify-content:flex-end\" align=\"right\" style=\"width: 80%\"> ";
                                for(int i=startindex ;i<endindex;i++){
                                    if(currentpage==i){
                                        pageStr+=" <button class=\"btn btn-primary\">第"+i+"頁</button>  ";
                                    }
                                    if(currentpage!=i){
                                        pageStr+="<button class=\"btn btn-primary\" onclick=\"topage('"+i+"')\">第"+i+"頁</button>  ";
                                    }
                                }
                                pageStr+=" </div>" ;
            request.setAttribute("list",listPage );
            request.setAttribute("pageStr",pageStr );


        }


         public List getRecords() {
             return records;
         }
         public Long getTotalrecordnumber() {
             return totalrecordnumber;
         }
         public Integer getStartindex() {
             return startindex;
         }
         public Integer getEndindex() {
             return endindex;
         }
         public Integer getTotalpagenumber() {
             return totalpagenumber;
         }
         public Integer getCurrentpage() {
             return currentpage;
         }
}
           

繼續閱讀