JavaBean
package com.itheima.commons.entity;
import java.io.Serializable;
import java.util.List;
public class PageResult implements Serializable {
private long total;
private List rows;
private int page;
private int size;
private int totalPage;
private int beg;
private int end;
private int pre;
private int next;
private static int DEFAULT_PAGE_RANGE=4;
public PageResult(){}
public PageResult(long total, List rows, int page, int size) {
super();
this.total = total;
this.rows = rows;
this.page = page;
this.size = size;
this.totalPage = (int) (total % size == 0 ? (total/size): (total/size+1));
calcPage(page,totalPage,2);
this.pre = page == 1 ? 1: page-1;
this.next = page == totalPage ? totalPage:page+1;
}
public void calcPage(int pageNum,int pageCount,int sideNum){
int startNum = 0;
int endNum = 0;
if(pageCount<=sideNum){
endNum = pageCount;
}else{
if((sideNum+pageNum)>=pageCount){
endNum = pageCount;
}else{
endNum = sideNum+pageNum;
if((sideNum+pageNum)<=(2*sideNum+1)){
if((2*sideNum+1)>=pageCount){
endNum = pageCount;
}else{
endNum = 2*sideNum+1;
}
}else{
endNum = sideNum + pageNum;
}
}
}
if(pageNum<=sideNum){
startNum = 1;
}else{
if((pageNum+sideNum)>=pageCount){
if((2*sideNum+1)>=pageCount){
if((pageCount - 2*sideNum)>=1){
startNum = pageCount - 2*sideNum;
}else{
startNum = 1;
}
}else{
startNum = pageCount - 2*sideNum;
}
}else{
if((pageNum-sideNum)>=1){
startNum = pageNum - sideNum;
}else{
startNum = 1;
}
}
}
this.beg = startNum;
this.end = endNum;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List getRows() {
return rows;
}
public void setRows(List rows) {
this.rows = rows;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getBeg() {
return beg;
}
public void setBeg(int beg) {
this.beg = beg;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getPre() {
return pre;
}
public void setPre(int pre) {
this.pre = pre;
}
public int getNext() {
return next;
}
public void setNext(int next) {
this.next = next;
}
}
jsp页面
<form action="#" method="post" id="pageForm">
<input type="hidden" name="page" value="" id="pageNum">
<input type="hidden" name="size" value="${page.size}" id="sizeNum">
<div class="box-footer">
<div class="pull-left">
<div class="form-group form-inline">
总共${page.totalPage} 页,共${page.total} 条数据。 每页
<select class="form-control" onchange="chooseSizeNum()" id="sizeSelect">
<option ${page.size==2?'selected':''}>2</option>
<option ${page.size==3?'selected':''}>3</option>
<option ${page.size==5?'selected':''}>5</option>
<option ${page.size==10?'selected':''}>10</option>
</select> 条
</div>
</div>
<div class="box-tools pull-right">
<ul class="pagination">
<li>
<a href="javascript:showPage('1')" aria-label="Previous">首页</a>
</li>
<li><a href="javascript:showPage('${page.pre}')">上一页</a></li>
<c:forEach begin="${page.beg}" end="${page.end}" var="currentnum">
<li><a href="javascript:showPage('${currentnum}')">${currentnum}</a></li>
</c:forEach>
<li><a href="javascript:showPage('${page.next}')">下一页</a></li>
<li>
<a href="javascript:showPage('${page.totalPage}')" aria-label="Next">尾页</a>
</li>
</ul>
</div>
</div>
</form>
Controller
@RequestMapping("/list")
public String list(@RequestParam(defaultValue = "1") int page,@RequestParam(defaultValue = "2") int size){
PageResult pageResult = companyService.findPage(page,size);
request.setAttribute("page",pageResult);
return "company/company-list";
}
service
@Override
public PageResult findPage(int page, int size) {
long total = companyDao.findTotal();
List<Company> list = companyDao.findPage((page-1)*size,size);
PageResult pageResult = new PageResult(total,list,page,size);
return pageResult;
}