java 分页工具_Java 分页工具

1 /**

2 * Java 分页工具类3 */

4 packagecom.common.tool.util;5

6 importjava.util.HashMap;7 importjava.util.List;8 importjava.util.Map;9

10 /**

11 *@authorneuhxy12 *@version2015-4-23 15:25:2113 *14 */

15 public classPageUtil {16

17 private int page = 1; //当前页

18 public int total = 0; //总页数

19 private int size = 10; //每页5条数据

20 private int slice = 5; //切片,当页大于切片时,进行分页处理

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

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

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

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

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

26 private List> list; //分页组件包含的集合

27 private List> show; //分页中需要显示的List

28 private String action; //设置跳转URL

29 private String method = "GET"; //使用POST或者GET请求

30 @SuppressWarnings("unused")31 private String code1; //分页组件的现实代码

32 @SuppressWarnings("unused")33 private String code2; //分页组件的现实代码

34 private Map map = new HashMap(); //隐含条件

35 public int[] sizeArray = { 10, 20, 50, 100, 1000, 5000 }; //设置几种可以显示的条数36

37 //默认构造函数

38 publicPageUtil() {39 }40

41 /**

42 * 分页初始化43 *44 *@paramlist45 *@paramsize46 */

47 public void init(List> initList, intpageSize) {48 if (null !=initList) {49

50 this.setSize(pageSize);51 this.setList(initList);52

53 totalRows =initList.size();54

55 hasPreviousPage = false;56

57 if ((totalRows % this.getSize()) == 0) {58 total = totalRows / this.getSize();59 } else{60 total = totalRows / this.getSize() + 1;61 }62

63 if (page >= total) { hasNextPage = false; } else { hasNextPage = true; }64

65 if (totalRows < this.getSize()) {66 this.pageStartRow = 0;67 this.pageEndRow =totalRows;68 } else{69 this.pageStartRow = 0;70 this.pageEndRow = this.getSize();71 }72 this.setShow(getShow(this.getPage()));73 }74

75 }76

77 //第一种样式

  • /
  • 格式

    78 publicString getCode1() {79

    80 StringBuffer sb = newStringBuffer();81 sb.append("

    ");82 sb.append("
    • ");83

    84 //判断是否有上一页

    85 if(isHasPreviousPage()) {86 sb.append("

  • «");87 sb.append("
  • <");88 } else{89 sb.append("
  • «");90 sb.append("
  • <");91 }92

93 //中间显示94 //当总页数大于切片时,才显示 ... 分页效果

95 if (getTotal() >getSlice()) {96

97 //如果当前页码在 1 - getSlice(),显示右侧 ... 翻页按钮

98 if (getPage() > 0 && getPage() <=getSlice()99 && getPage() < getTotal() -getSlice()) {100 for (int i = 1; i <= getSlice(); i++) {101 String spanClzz = "

" + i + " (current)";102

103 if (this.page ==i) {104 spanClzz = "

" + i + " (current)";105 }106 sb.append(spanClzz);107 //当总页数大于3 的时候 添加右侧 ... 分页

108 }109 if (getTotal() > getSlice() +1) {110 String dotClzz = "

... (current)";111 sb.append(dotClzz);112 }113

114 }115 //如果当前页码在6 到 total - 6 页,显示两端的两个 ...翻页按钮

116 if (getPage() > getSlice() && getPage() <= getTotal() -getSlice()) {117 String dotClzz = "

118 +getAction()119 + "?page="

120 + (getPage() - ((getSlice() + 1) / 2))121 + "\"> ... (current)

";122 sb.append(dotClzz);123 for (int i = getPage() - ((getSlice() - 1) / 2); i <=getPage()124 + ((getSlice() - 1) / 2); i++) {125 String spanClzz = "

126 +getAction()127 + "?page="

128 +i129 + "\"> "

130 +i131 + " (current)

";132

133 if (this.page ==i) {134 spanClzz = "

"

135 +i136 + " (current)

";137 }138 sb.append(spanClzz);139 //当总页数大于getSlice() 的时候 添加右侧 ... 分页

140

141 }142 dotClzz = "

143 +getAction()144 + "?page="

145 + (getPage() + ((getSlice() + 1) / 2))146 + "\"> ... (current)

";147 sb.append(dotClzz);148

149 }150 //如果当前页码在total-getSlice() 到 total 页,左侧显示一个...翻页按钮

151 if (getPage() > 0 && getPage() > getTotal() -getSlice()152 && getPage() <=getTotal()) {153

154 String dotClzz = "

155 +getAction()156 + "?page="

157 + (getTotal() -getSlice())158 + "\"> ... (current)

";159 sb.append(dotClzz);160 int s = getTotal() - getSlice() + 1 > 0 ?getTotal()161 - getSlice() + 1 : 1;162 for (int i = s; i <= getTotal(); i++) {163 String spanClzz = "

164 +getAction()165 + "?page="

166 +i167 + "\"> "

168 +i169 + " (current)

";170

171 if (this.page ==i) {172 spanClzz = "

"

173 +i174 + " (current)

";175 }176 sb.append(spanClzz);177 }178

179 }180 } else{181 //否则直接显示,有几页显示几页,不加...

182 for (int i = 1; i <= getTotal(); i++) {183 String spanClzz = "

" +i185 + " (current)";186

187 if (this.page ==i) {188 spanClzz = "

"

189 +i190 + " (current)

";191 }192 sb.append(spanClzz);193 //当总页数大于getSlice() 的时候 添加右侧 ... 分页

194

195 }196 }197

198 //判断是否有下一页

199 if(isHasNextPage()) {200 sb.append("

201 + (getPage() + 1) + "\">>

");202 sb.append(" »");204 } else{205 sb.append(" >");206 sb.append(" »");207 }208

209 sb.append("

");210 returnsb.toString();211 }212

213 //第二种分页样式 带分页现实多少条记录设置

214 publicString getCode2() {215

216 StringBuffer sb = newStringBuffer();217 String code = "

";218 String scripts = "";223

224 setMethod("POST");225 code += "

";227

228 String hidden = "";230 if (!map.isEmpty()) {231 for(String key : map.keySet()) {232 System.out.println("key= " + key + " and value= "

233 +map.get(key));234 hidden += "";236 }237 }238 code +=hidden;239 code +=scripts;240

241 //底面样式 首页 上一页

242 if (getPage() != 1) {243 code += "首页 "

244 + "上一页 ";246 } else{247 code += "首页 " + "上一页 ";248 }249

250 //跳第几页

251 code += "第";252 for (int i = 1; i <= getTotal(); i++) {253 if (i == this.getPage()) {254 code += "" +i255 + "";256 } else{257 code += "" + i + "";258 }259 }260 code += "页,共" + this.getTotal() + "页";261

262 //每页显示几个记录

263 code += ",每页显示";264 for (int j = 0; j < sizeArray.length; j++) {265 if (sizeArray[j] ==getSize()) {266 code += "" + sizeArray[j] + "";268 } else{269 code += "" +sizeArray[j]270 + "";271 }272 }273

274 code += "条记录";275

276 //下一页 尾页

277 if (getPage() !=getTotal()) {278 code += "下一页 " + "

280 + getTotal() + ")\">尾页

";281 } else{282 code += " 下一页 " + " 尾页 ";283 }284 code += "
";285 sb.append(code);286 sb.append("");287 returnsb.toString();288 }289

290 //判断要不要分页

291 public booleanisNext() {292 return list.size() >getSlice();293 }294

295 public void setHasPreviousPage(booleanhasPreviousPage) {296 this.hasPreviousPage =hasPreviousPage;297 }298

299 //获取下一个内容

300 public List>getNextPage() {301 page = page + 1;302 disposePage();303 returngetShow(page);304 }305

306 //处理分页

307 private voiddisposePage() {308 if (page == 0) {309 page = 1;310 }311 if ((page - 1) > 0) {312 hasPreviousPage = true;313 } else{314 hasPreviousPage = false;315 }316

317 if (page >=total) {318 hasNextPage = false;319 } else{320 hasNextPage = true;321 }322 }323

324 //获取上一页内容

325 public List>getPreviousPage() {326 page = page - 1;327

328 if ((page - 1) > 0) {329 hasPreviousPage = true;330 } else{331 hasPreviousPage = false;332 }333 if (page >=total) {334 hasNextPage = false;335 } else{336 hasNextPage = true;337 }338 returngetShow(page);339 }340

341 public List>getShow() {342 returnshow;343 }344

345 //获取第 n 页内容

346 public List> getShow(intpage) {347

348 if (page == 0) {349 this.setPage(1);350 page = 1;351 } else{352 this.setPage(page);353 }354

355 this.disposePage();356

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

358 pageEndRow = page *size;359 pageStartRow = pageEndRow -size;360 } else{361 pageEndRow =totalRows;362 pageStartRow = size * (total - 1);363 }364

365 List> show = null;366 if (!list.isEmpty()) {367 show =list.subList(pageStartRow, pageEndRow);368 }369 returnshow;370 }371

372 //获取第一页内容

373 public List>getFistPage() {374 if (this.isNext()) {375 return list.subList(0, size);376 } else{377 returnlist;378 }379 }380

381 public intgetPage() {382 returnpage;383 }384

385 public void setPage(intpage) {386 this.page =page;387 }388

389 public intgetTotal() {390 returntotal;391 }392

393 public void setTotal(inttotal) {394 this.total =total;395 }396

397 public intgetSize() {398 returnsize;399 }400

401 public void setSize(intsize) {402 this.size =size;403 }404

405 public intgetTotalRows() {406 returntotalRows;407 }408

409 public void setTotalRows(inttotalRows) {410 this.totalRows =totalRows;411 }412

413 public intgetPageStartRow() {414 returnpageStartRow;415 }416

417 public void setPageStartRow(intpageStartRow) {418 this.pageStartRow =pageStartRow;419 }420

421 public intgetPageEndRow() {422 returnpageEndRow;423 }424

425 public void setPageEndRow(intpageEndRow) {426 this.pageEndRow =pageEndRow;427 }428

429 public booleanisHasNextPage() {430 returnhasNextPage;431 }432

433 public void setHasNextPage(booleanhasNextPage) {434 this.hasNextPage =hasNextPage;435 }436

437 public List>getList() {438 returnlist;439 }440

441 public void setList(List>list) {442 this.list =list;443 }444

445 public booleanisHasPreviousPage() {446 returnhasPreviousPage;447 }448

449 publicString getAction() {450 returnaction;451 }452

453 public voidsetAction(String action) {454 this.action =action;455 }456

457 publicString getMethod() {458 returnmethod;459 }460

461 public voidsetMethod(String method) {462 this.method =method;463 }464

465 public MapgetMap() {466 returnmap;467 }468

469 public void setMap(Mapmap) {470 this.map =map;471 }472

473 public void setShow(List>show) {474 this.show =show;475 }476

477 public voidsetCode1(String code1) {478 this.code1 =code1;479 }480

481 public voidsetCode2(String code2) {482 this.code2 =code2;483 }484

485 public intgetSlice() {486 returnslice;487 }488

489 public void setSlice(intslice) {490 this.slice =slice;491 }492

493 public int[] getSizeArray() {494 returnsizeArray;495 }496

497 public void setSizeArray(int[] sizeArray) {498 this.sizeArray =sizeArray;499 }500

501 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值