分页接口 :
1 package com.forum.util;
2 3 4 public interface Pager 5 { 6 /** 默认第一页号 **/ 7 int FIRST_PAGE_NO = 1; 8 9 /** 默认页大小 **/ 10 int DEFAULT_PAGE_SIZE = 10; 11 12 /** 页大小 **/ 13 String PAGE_SIZE_KEY = "PageSize"; 14 15 /** 页号 **/ 16 String PAGE_NO_KEY = "PageNO"; 17 18 /** 获取记录数 **/ 19 int getRowsCount(); 20 21 /** 设置记录总数 **/ 22 void setRowsCount( int rowsCount ); 23 24 /** 获取总页数 **/ 25 int getPageCount(); 26 27 /** 获取页大小 **/ 28 int getPageSize(); 29 30 /** 设置页大小 **/ 31 void setPageSize( int pageSize ); 32 33 /** 获取上一页号 **/ 34 int getPrevPageNO(); 35 36 /** 获取上一页链接 **/ 37 String getPrevPageURL(); 38 39 /** 获取下一页号 **/ 40 int getNextPageNO(); 41 42 /** 获取下一页链接 **/ 43 String getNextPageURL(); 44 45 /** 获取第一页号 **/ 46 int getFirstPageNO(); 47 48 /** 获取第一页链接 **/ 49 String getFirstPageURL(); 50 51 /** 获取最后一页号 **/ 52 int getLastPageNO(); 53 54 /** 获取最后一页链接 **/ 55 String getLastPageURL(); 56 57 /** 获取当前页号 **/ 58 int getCurPageNO(); 59 60 /** 获取当前页号链接 **/ 61 String getCurPageURL(); 62 63 /** 获取指定页号的连接 **/ 64 String getPageURL( int pageNO ); 65 66 /** 是否有下一页 **/ 67 boolean hasNextPage(); 68 69 /** 是否有上一页 **/ 70 boolean hasPrevPage(); 71 72 /** 设置请求URL **/ 73 void setRequestURL( String requestURL ); 74 75 /** 获取请求URL **/ 76 String getRequestURL(); 77 78 /** 增加页面参数 **/ 79 void addParameter(String parameterName , String parameterValue); 80 81 /** 获取分页控制条 **/ 82 String getControlBar( Object parameter ); 83 } 84 接口实现 : SimplePager 1 /**
2 作者 :Fantasy 3 Email: fantasycs@163.com 4 QQ : 8635335 5 Blog : http://www./fantasy 6 */ 7 package com.forum.util; 8 9 import java.util.HashMap; 10 import java.util.Iterator; 11 import java.util.Map; 12 13 /** 使用参考 JSP 14 <% Pager pager = new SimplePager(memberCount , pageSize ,curPageNo , "listmembers"); %> 15 <a>总记录数 : <%=pager.getRowsCount()%> </a> 16 <a href="#">当前页数:<span style="color:#FF0000"><%=pager.getCurPageNO()%></span></a> 17 <a href="<%=pager.getFirstPageURL()%>">第一页</a> 18 <a href="<%=pager.getPrevPageURL()%>">上一页</a> 19 <a href="<%=pager.getNextPageURL()%>">下一页</a> 20 <a href="<%=pager.getLastPageURL()%>">最后一页</a> 21 跳转到 <select onChange="document.URL=this.value"> 22 <% for( int i = 1 ; i <= pager.getPageCount() ; i++ ) { %> 23 <option value="<%=pager.getPageURL(i)%>" <%= pager.getCurPageNO() == i ? "selected" : "" %>>第 <%=i%> 页</option> 24 <% } %> 25 <br> 26 <%=pager.getControlBar("center")%> 27 </select> 28 **/ 29 public class SimplePager implements Pager 30 { 31 private int rowsCount; 32 33 private int pageCount; 34 35 private int curPageNO; 36 37 private int pageSize; 38 39 private String requestURL; 40 41 private Map paramter = new HashMap(); 42 43 /** 44 * 构造函数 ★推荐使用★ 45 * @param rowsCount 记录总数 46 * @param pageSize 每页显示记录数 47 * @param curPageNO 当前页 48 * @param requestURL页面访问URL 49 * @param Example : Pager pager = new SimplePager(threadsCount , pageSize ,curPageNo , "listthreads"); 50 * @param 保存参数[通常是保存页面查询条件] : pager.addParameter("username","root"); 51 * @param 保存参数[通常是保存页面查询条件] : pager.addParameter("logindate","2006-11-11"); 52 */ 53 public SimplePager( int rowsCount , int pageSize , int curPageNO , String requestURL ) 54 { 55 this.rowsCount = rowsCount; 56 this.pageSize = pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE; 57 this.curPageNO = curPageNO >= FIRST_PAGE_NO ? curPageNO : FIRST_PAGE_NO; 58 this.requestURL = requestURL; 59 } 60 61 /** 62 * ★不推荐使用★ 63 * @param 必须设置rowsCount 否则只有一页 64 * @param 必须设置pageSize 否则默认每页只显示10条 65 * @param 必须设置curPageNO 否则你永远都在第一页 66 * @param 必须设置requestURL否则将使用默认请求地址,生成链接地址结果(理论上不会错) : <a href=‘?PageNO=2&PageSize=10‘ title=‘第2页‘>[2]</a> 67 */ 68 public SimplePager() 69 { 70 this.rowsCount = 0; 71 this.pageSize = DEFAULT_PAGE_SIZE; 72 this.curPageNO = FIRST_PAGE_NO; 73 this.requestURL = ""; 74 } 75 76 public int getCurPageNO() 77 { 78 return curPageNO; 79 } 80 81 public int getNextPageNO() 82 { 83 return curPageNO + 1 <= getPageCount() ? curPageNO + 1 : getPageCount(); 84 } 85 86 public void setRowsCount( int rowsCount ) 87 { 88 this.rowsCount = rowsCount; 89 } 90 91 public int getRowsCount() 92 { 93 return rowsCount; 94 } 95 96 public String getNextPageURL() 97 { 98 return getPageURL( getNextPageNO() ); 99 } 100 101 public String getPrevPageURL() 102 { 103 return getPageURL( getPrevPageNO() ); 104 } 105 106 public int getPageCount() 107 { 108 return (rowsCount > 0 && rowsCount % pageSize == 0) ? (rowsCount / pageSize) : (rowsCount/pageSize + 1); 109 } 110 111 public int getPageSize() 112 { 113 return pageSize; 114 } 115 116 public String getCurPageURL() 117 { 118 return getPageURL( getCurPageNO() ); 119 } 120 121 public int getPrevPageNO() 122 { 123 return curPageNO - 1 >= FIRST_PAGE_NO ? curPageNO - 1 : FIRST_PAGE_NO ; 124 } 125 126 public boolean hasNextPage() 127 { 128 return curPageNO + 1 <= getPageCount(); 129 } 130 131 public boolean hasPrevPage() 132 { 133 return curPageNO - 1 >= FIRST_PAGE_NO ; 134 } 135 136 public void setRequestURL(String requestURL) 137 { 138 this.requestURL = requestURL; 139 } 140 141 public String getRequestURL() 142 { 143 return requestURL; 144 } 145 146 public void setPageSize(int pageSize) 147 { 148 this.pageSize = pageSize; 149 } 150 151 public int getFirstPageNO() 152 { 153 return FIRST_PAGE_NO; 154 } 155 156 public String getFirstPageURL() 157 { 158 return getPageURL( getFirstPageNO() ); 159 } 160 161 public int getLastPageNO() 162 { 163 return getPageCount(); 164 } 165 166 public String getLastPageURL() 167 { 168 return getPageURL( getLastPageNO() ); 169 } 170 171 public String getPageURL(int pageNO) 172 { 173 pageNO = pageNO >= FIRST_PAGE_NO ? pageNO : FIRST_PAGE_NO; 174 pageNO = pageNO <= getPageCount() ? pageNO : getPageCount(); 175 StringBuffer buffer = new StringBuffer(256); 176 buffer.append(requestURL).append("?").append(PAGE_NO_KEY).append("=").append( pageNO ); 177 buffer.append("&").append(PAGE_SIZE_KEY).append("=").append(pageSize); 178 return paramter.size() > 0 ? buffer.append( getRequestParameter() ).toString() : buffer.toString(); 179 } 180 181 public void addParameter(String parameterName, String parameterValue) 182 { 183 paramter.put(parameterName , parameterValue); 184 } 185 186 /** 187 * 生成默认分页工具条 188 * 样式 : <<第一页 <前十页 [1] [2] [3] [4] [5] [6] [7] 后十页> 最后一页>> 189 */ 190 public String getControlBar( Object parameter ) 191 { 192 int pagesView = 10; 193 int pageCount = getPageCount(); 194 int startPageNo = FIRST_PAGE_NO ; 195 int endPageNo = pageCount; 196 if( pagesView < pageCount ) 197 { 198 startPageNo = curPageNO - pagesView/2 >= FIRST_PAGE_NO ? curPageNO - pagesView/2 : FIRST_PAGE_NO; 199 startPageNo = startPageNo + pagesView <= pageCount ? startPageNo : pageCount - pagesView; 200 endPageNo = startPageNo + pagesView; 201 } 202 StringBuffer bar = new StringBuffer(1024); 203 bar.append("<div id=‘PageControlBar‘ align=‘" + parameter.toString() + "‘>"); 204 bar.append("<a href=‘" + getFirstPageURL() + "‘ title=‘第一页‘><span><<第一页</span></a> "); 205 bar.append("<a href=‘" + getPageURL( curPageNO - 10 ) + "‘ title=‘前10页‘><span><前十页</span></a> "); 206 for( int i = startPageNo ; i <= endPageNo ; i++) 207 { 208 bar.append(" <a href=‘" + getPageURL( i ) + "‘ title=‘第" + i + "页‘" + ( i == curPageNO ? "style=‘color:red;‘" : "") + ">[" + i + "]</a>"); 209 } 210 bar.append(" <a href=‘" + getPageURL( curPageNO + 10 ) + "‘ title=‘后10页‘><span>后十页></span></a>"); 211 bar.append(" <a href=‘" + getLastPageURL() + "‘ title=‘最后一页‘><span>最后一页>></span></a>"); 212 bar.append("</div>"); 213 return bar.toString(); 214 } 215 216 /** 217 * 获取自定义参数 218 */ 219 private String getRequestParameter() 220 { 221 StringBuffer buffer = new StringBuffer(256); 222 for( Iterator iter = paramter.entrySet().iterator() ; iter.hasNext() ; ) 223 { 224 Map.Entry entry = (Map.Entry)iter.next(); 225 buffer.append("&").append( entry.getKey()).append("=").append(entry.getValue()); 226 } 227 return buffer.toString(); 228 } 229 } 230 若该API 有什么BUG或者设计的上的问题请各位高手指教。 菜鸟俺先谢过了~~ 嘿嘿 Pager 源代码下载 Pager 源代码下载 Pager 源代码下载 |
|