在大量資料列出時,螢幕不可能完整顯示,這時必須使用分頁,SQL的分頁已經在其他文章討論過,這裡討論的是JSP分業代碼的實現。
頁面傳入參數p作為頁面選擇,無參數預設第一頁。
計算頁面分業的基本參數,currentPage為當前頁面,pageRows則設定每頁的行數,在取得totalPage則是總頁數,實際情況根據各位元據情況決定,這裡暫訂4000。
分頁參數
// 預設當前頁面數 0 long currentPage = 0; // 如果傳入參數p有效則取傳入參數 if (request.getParameter("p") != null) { // 取得當前頁面參數 String p = request.getParameter("p"); try { // 得到數實值型別的頁面數 currentPage = Long.valueOf(p); } catch (Exception e) { currentPage = 0; } } // 得到總記錄數(例如取自資料庫) long total = 4000; // 設定每頁列出行數 final long pageRows = 19; // 以當前頁未中心左右列出9個頁面數 final int clickPageList = 9; // 計算以 pageRows 為行數頁面數量 long pageCount = total % pageRows; // 如果餘數大於 0 必須在總頁面下 + 1 if (pageCount > 0) { // 得到實際頁面數 pageCount = total / pageRows + 1; } else { pageCount = total / pageRows; }
分頁實現
// 如果頁數有效if (pageCount > 0){ // 為方便操作設定兩個固定的連結 if (currentPage > 0) { out.print(String.format("<A href=\"page.jsp?p=%s\" target=_blank>上一頁</A> ", currentPage - 1)); } else { out.print("上一頁"); } if (currentPage < pageCount - 1) { out.print(String.format("<A href=\"page.jsp?p=%s\" target=_blank> 下一頁</A> ", currentPage + 1)); } else { out.print(" 下一頁"); } out.print("<a href=\"page.jsp\"> 第1頁</a> "); String line = ""; // 以當前頁為中心左列出連結 for (long i = currentPage; i >= 0; i--) { // 限制左列出數量 if (i < (currentPage - clickPageList)) { break; } line = String.format("<a href=\"page.jsp?p=%s\">%s</a> ", i, i + 1) + line; } out.print(line); line = ""; // 以當前頁為中心右列出連結 for (long i = currentPage + 1; i <= pageCount - 1; i++) { // 限制又列出數量 if (i >= (currentPage + clickPageList)) { break; } line = line + String.format("<a href=\"page.jsp?p=%s\">%s</a> ", i, i + 1); } out.print(line); line = ""; out.print(String.format("<a href=\"page.jsp?p=%s\">最後一頁</a>", pageCount - 1));}
頁面選取代碼如下:
示範效果如下,實際使用可以將文本替換成相應的圖片或者CSS樣式,以達到更好的效果