這裡提供一個撰寫jsp時很常會用到的一個分頁功能,主要提供二種簡單的樣式,程式是改寫一個php的分頁程式而來,大概的結果會像下圖,可以自行增加CSS來美化結果。
樣式一主要提供首頁、上一頁、下一頁及尾頁功能
樣式二提供分頁數列及首頁、上一頁、下一頁及尾頁功能
這是有使用CSS調整過的,整體感覺就會差吧!
以下是主要的原始碼
package web.tools; public class SubPages { private int each_disNums;// 每頁顯示的條目數 private int nums;// 總條目數 private int current_page;// 目前所在頁數 private int sub_pages;// 每次顯示的頁數 private int pageNums;// 總頁數 總數/每次顯示的頁數 // private java.util.ArrayList<Integer> page_array;// 用來構造分頁的數組 private String subPage_link;// 每個分頁的鏈接 // private int subPage_type;// 顯示分頁的類型 /* * 當subPage_type=1的時候為普通分頁模式 example: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] * [下頁] [尾頁] 當subPage_type=2的時候為經典分頁樣式 example: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 * 5 6 7 8 9 10 [下頁] [尾頁] */ public SubPages(int each_disNums, int nums, int current_page, int sub_pages, String subPage_link) { this.each_disNums = each_disNums; this.nums = nums; if (current_page < 1) { this.current_page = 1; } else { this.current_page = current_page; } this.sub_pages = sub_pages; this.pageNums = (int) java.lang.Math.ceil(nums / each_disNums); this.subPage_link = subPage_link; // this.show_SubPages(subPage_type); // echo pageNums."--".sub_pages; } /* * show_SubPages函數用在構造函數里面。而且用來判斷顯示什麼樣子的分頁type */ // private String show_SubPages(int subPage_type){ // if(subPage_type == 1){ // return this.subPageCss1(); // }else if (subPage_type == 2){ // return this.subPageCss2(); // } // } /* * 用來給建立分頁的數組初始化的函數。1,2,3,4,5,6..... */ public java.util.ArrayList<Integer> initArray() { java.util.ArrayList<Integer> page_array = new java.util.ArrayList<Integer>(); for (int i = 0; i < this.sub_pages; i++) { page_array.add(i, i); ; } return page_array; } /* * construct_num_Page該函數使用來構造顯示的條目 即使:[1][2][3][4][5][6][7][8][9][10] */ public java.util.ArrayList<Integer> construct_num_Page() { java.util.ArrayList<Integer> current_array = new java.util.ArrayList<Integer>(); if (this.pageNums < this.sub_pages) { // current_array=array(); for (int i = 0; i < this.pageNums; i++) { current_array.add(i, i + 1); } } else { current_array = this.initArray(); if (this.current_page <= 3) { for (int i = 0; i < current_array.size(); i++) { current_array.set(i, i + 1); } } else if (this.current_page <= this.pageNums && this.current_page > this.pageNums - this.sub_pages + 1) { for (int i = 0; i < current_array.size(); i++) { current_array.set(i, (this.pageNums) - (this.sub_pages) + 1 + i); } } else { for (int i = 0; i < current_array.size(); i++) { current_array.set(i, this.current_page - 2 + i); } } } for (int i = 0; i < current_array.size(); i++) System.out.print(current_array.get(i) + " "); System.out.println(); return current_array; } /* * 構造普通模式的分頁 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁] */ public String subPageCss1() { String subPageCss1Str = ""; subPageCss1Str += "共" + this.nums + "條記錄,"; subPageCss1Str += "每頁顯示" + this.each_disNums + "條,"; subPageCss1Str += "當前第" + this.current_page + "/" + this.pageNums + "頁 "; if (this.current_page > 1) { String firstPageUrl = this.subPage_link + "1"; String prewPageUrl = this.subPage_link + (this.current_page - 1); subPageCss1Str += "[<a href='" + firstPageUrl + "'>首頁</a>] "; subPageCss1Str += "[<a href='" + prewPageUrl + "'>上一頁</a>] "; } else { subPageCss1Str += "[首頁] "; subPageCss1Str += "[上一頁] "; } if (this.current_page < this.pageNums) { String lastPageUrl = this.subPage_link + this.pageNums; String nextPageUrl = this.subPage_link + (this.current_page + 1); subPageCss1Str += " [<a href='" + nextPageUrl + "'>下一頁</a>] "; subPageCss1Str += "[<a href='" + lastPageUrl + "'>尾頁</a>] "; } else { subPageCss1Str += "[下一頁] "; subPageCss1Str += "[尾頁] "; } return subPageCss1Str; } /* * 構造經典模式的分頁 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁] */ public String subPageCss2() { String subPageCss2Str = ""; subPageCss2Str += "當前第" + current_page + "/" + pageNums + "頁 "; if (current_page > 1) { String firstPageUrl = subPage_link + "1"; String prewPageUrl = subPage_link + (current_page - 1); subPageCss2Str += "[<a href='" + firstPageUrl + "'>首頁</a>] "; subPageCss2Str += "[<a href='" + prewPageUrl + "'>上一頁</a>] "; } else { subPageCss2Str += "[首頁] "; subPageCss2Str += "[上一頁] "; } java.util.ArrayList<Integer> a = construct_num_Page(); int s; for (int i = 0; i < a.size(); i++) { s = a.get(i); if (s == current_page) { subPageCss2Str += "[<span style='color:red;font-weight:bold;'>" + s + "</span>]"; } else { String url = subPage_link + s; subPageCss2Str += "[<a href='" + url + "'>" + s + "</a>]"; } } if (current_page < pageNums) { String lastPageUrl = subPage_link + pageNums; String nextPageUrl = subPage_link + (current_page + 1); subPageCss2Str += " [<a href='" + nextPageUrl + "'>下一頁</a>] "; subPageCss2Str += "[<a href='" + lastPageUrl + "'>尾頁</a>] "; } else { subPageCss2Str += "[下一頁] "; subPageCss2Str += "[尾頁] "; } return subPageCss2Str; } public static void main(String args[]) { web.tools.SubPages pages = new web.tools.SubPages(20, 1031, 13, 10, "index.jsp?p="); System.out.println(pages.subPageCss2()); } }
jsp使用的原始碼(大部份說明都在java程式裡)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% //if(!$pageCurrent) $pageCurrent=1; web.tools.SubPages pages = new web.tools.SubPages(20,1031,13,10,"index.jsp?p="); out.print("樣式一:"+pages.subPageCss1()); out.print("</br>"); out.print("樣式二:"+pages.subPageCss2()); %> </body> </html>
用你的方法複製貼上之後會出現
Note: sun.tools.javac.Main has been deprecated.
/ResinEx/成品/index.jsp:13: Class web.tools.SubPages not found.
web.tools.SubPages pages = new web.tools.SubPages(20,1031,13,10,”index.jsp?p=”);
^
/ResinEx/成品/index.jsp:13: Class web.tools.SubPages not found.
web.tools.SubPages pages = new web.tools.SubPages(20,1031,13,10,”index.jsp?p=”);
^
2 errors, 1 warning
請問如何解決
這看起來像是少了一隻程式,建議你可以用我提供的原始碼
你使用Resin會設定自動編譯嘛?
或著你可以提供你的全部測試的原始碼?我幫你看看?
mail for me
catyku at gmail.com