1 importjava.util.ArrayList;2 importjava.util.List;3

4 /**

5 *6 *@authorcheney7 *8 * @date Aug 31, 20129 */

10 public class PageModel{11 private int page = 1; //当前页

12 public int totalPages = 0; //总页数

13 private int pageRecorders;//每页5条数据

14 private int totalRows = 0; //总数据数

15 private int pageStartRow = 0;//每页的起始数

16 private int pageEndRow = 0; //每页显示数据的终止数

17 private boolean hasNextPage = false; //是否有下一页

18 private boolean hasPreviousPage = false; //是否有前一页

19 private Listlist;20

21 /**

22 *23 *@paramlist24 *@parampageRecorders25 */

26 public PageModel(List list, intpageRecorders) {27 init(list, pageRecorders);//通过对象集,记录总数划分

28 }29

30 /** */

31 /**

32 * 初始化list,并告之该list每页的记录数33 *34 *@paramlist35 *@parampageRecorders36 */

37 public void init(List list, intpageRecorders) {38 this.pageRecorders =pageRecorders;39 this.list =list;40 totalRows =list.size();41

42 hasPreviousPage = false;43

44 if ((totalRows % pageRecorders) == 0) {45 totalPages = totalRows /pageRecorders;46 } else{47 totalPages = totalRows / pageRecorders + 1;48 }49

50 if (page >=totalPages) {51 hasNextPage = false;52 } else{53 hasNextPage = true;54 }55

56 if (totalRows

65 publicString displayForPage(String method) {66 StringBuffer sb = newStringBuffer();67 sb.append("

");68

69 //判断是否有上一页

70 if (this.isHasPreviousPage()) {71 sb.append("上一页");74 } else{75 sb.append("上一页");76 }77

78 //中间显示

79 for (int i = 1; i <= this.getTotalPages(); i++) {80 String spanClzz = "

81 + method + "('" + String.valueOf(i) + "');return false;\">"

82 + i + "

";83

84 if (this.page ==i) {85 spanClzz = "" + i + "";86 }87 sb.append(spanClzz);88

89 //当大于9页数的时候才进行分页显示

90 if (this.getTotalPages() - 2 > 7) {91 if (i == 5) {92 i = this.getTotalPages() - 2;93 sb.append("...");94 }95 }96 }97 //判断是否有下一页

98 if (this.isHasNextPage()) {99 sb.append("下一页");102

103 } else{104 sb.append("下一页");105 }106

107 sb.append("

");108 returnsb.toString();109 }110

111 publicString displayForPage() {112 StringBuffer sb = newStringBuffer();113 sb.append("

");114

115 //判断是否有上一页

116 if (this.isHasPreviousPage()) {117 sb118 .append("

119 + String.valueOf(this.getPage() - 1)120 + "');return false;\">上一页

");121 } else{122 sb.append(" 上一页");123 }124

125 //中间显示

126 for (int i = 1; i <= this.getTotalPages(); i++) {127 String spanClzz = "

128 + String.valueOf(i) + "');return false;\">" + i + "

";129

130 if (this.page ==i) {131 spanClzz = "" + i + "";132 }133 sb.append(spanClzz);134

135 //当大于9页数的时候才进行分页显示

136 if (this.getTotalPages() - 2 > 7) {137 if (i == 5) {138 i = this.getTotalPages() - 2;139 sb.append("...");140 }141 }142 }143 //判断是否有下一页

144 if (this.isHasNextPage()) {145 sb146 .append("

147 + String.valueOf(this.getPage() + 1)148 + "');return false;\">下一页

");149

150 } else{151 sb.append("下一页");152 }153

154 sb.append("

");155 returnsb.toString();156 }157

158 //判断要不要分页

159 public booleanisNext() {160 return list.size() > 5;161 }162

163 public void setHasPreviousPage(booleanhasPreviousPage) {164 this.hasPreviousPage =hasPreviousPage;165 }166

167 /**

168 *169 *@return

170 */

171 public ListgetNextPage() {172 page = page + 1;173 disposePage();174 returngetObjects(page);175 }176

177 /**

178 * 处理分页179 */

180 private voiddisposePage() {181 if (page == 0) {182 page = 1;183 }184 if ((page - 1) > 0) {185 hasPreviousPage = true;186 } else{187 hasPreviousPage = false;188 }189

190 if (page >=totalPages) {191 hasNextPage = false;192 } else{193 hasNextPage = true;194 }195 }196

197 /**

198 * 上一页199 *200 *@return

201 */

202 public ListgetPreviousPage() {203 page = page - 1;204

205 if ((page - 1) > 0) {206 hasPreviousPage = true;207 } else{208 hasPreviousPage = false;209 }210 if (page >=totalPages) {211 hasNextPage = false;212 } else{213 hasNextPage = true;214 }215 returngetObjects(page);216 }217

218 /**

219 * 获取第几页的内容220 *221 *@parampage222 *@return

223 */

224 public List getObjects(intpage) {225 if (page == 0) {226 this.setPage(1);227 page = 1;228 } else{229 this.setPage(page);230 }231

232 this.disposePage();233

234 if (page * pageRecorders < totalRows) {//判断是否为最后一页

235 pageEndRow = page *pageRecorders;236 pageStartRow = pageEndRow -pageRecorders;237 } else{238 pageEndRow =totalRows;239 pageStartRow = pageRecorders * (totalPages - 1);240 }241

242 List objects = null;243 if (!list.isEmpty()) {244 objects =list.subList(pageStartRow, pageEndRow);245 }246 returnobjects;247 }248

249 /**

250 * 第一页251 *252 *@return

253 */

254 public ListgetFistPage() {255 if (this.isNext()) {256 return list.subList(0, pageRecorders);257 } else{258 returnlist;259 }260 }261

262 /**

263 *@returnthe page264 */

265 public intgetPage() {266 returnpage;267 }268

269 /**

270 *@parampage271 * the page to set272 */

273 public void setPage(intpage) {274 this.page =page;275 }276

277 /**

278 *@returnthe totalPages279 */

280 public intgetTotalPages() {281 returntotalPages;282 }283

284 /**

285 *@paramtotalPages286 * the totalPages to set287 */

288 public void setTotalPages(inttotalPages) {289 this.totalPages =totalPages;290 }291

292 /**

293 *@returnthe pageRecorders294 */

295 public intgetPageRecorders() {296 returnpageRecorders;297 }298

299 /**

300 *@parampageRecorders301 * the pageRecorders to set302 */

303 public void setPageRecorders(intpageRecorders) {304 this.pageRecorders =pageRecorders;305 }306

307 /**

308 *@returnthe totalRows309 */

310 public intgetTotalRows() {311 returntotalRows;312 }313

314 /**

315 *@paramtotalRows316 * the totalRows to set317 */

318 public void setTotalRows(inttotalRows) {319 this.totalRows =totalRows;320 }321

322 /**

323 *@returnthe pageStartRow324 */

325 public intgetPageStartRow() {326 returnpageStartRow;327 }328

329 /**

330 *@parampageStartRow331 * the pageStartRow to set332 */

333 public void setPageStartRow(intpageStartRow) {334 this.pageStartRow =pageStartRow;335 }336

337 /**

338 *@returnthe pageEndRow339 */

340 public intgetPageEndRow() {341 returnpageEndRow;342 }343

344 /**

345 *@parampageEndRow346 * the pageEndRow to set347 */

348 public void setPageEndRow(intpageEndRow) {349 this.pageEndRow =pageEndRow;350 }351

352 /**

353 *@returnthe hasNextPage354 */

355 public booleanisHasNextPage() {356 returnhasNextPage;357 }358

359 /**

360 *@paramhasNextPage361 * the hasNextPage to set362 */

363 public void setHasNextPage(booleanhasNextPage) {364 this.hasNextPage =hasNextPage;365 }366

367 /**

368 *@returnthe list369 */

370 public ListgetList() {371 returnlist;372 }373

374 /**

375 *@paramlist376 * the list to set377 */

378 public void setList(Listlist) {379 this.list =list;380 }381

382 /**

383 *@returnthe hasPreviousPage384 */

385 public booleanisHasPreviousPage() {386 returnhasPreviousPage;387 }388

389 /*

390 *391 * @param args392 */

393 public static voidmain(String[] args) {394

395 List list = new ArrayList();396

397 list.add("a");398 list.add("b");399 list.add("c");400 list.add("d");401 list.add("e");402 list.add("f");403 list.add("g");404 list.add("h");405 list.add("h");406 list.add("i");407 list.add("j");408

409 System.out.println(list.size());410

411 PageModel pm = new PageModel(list, 3);//每页显示条数

412

413 pm.getObjects(1);414

415 System.out.println(pm.displayForPage("disResult"));416 }417

418 }

更多推荐

java 分页最后一页_java-分页之页面分页