java传统的分页使用

JavaBean

package com.itheima.commons.entity;

import java.io.Serializable;
import java.util.List;

/**
 * 分页结果类
 * @author Administrator
 *
 */
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

 /**
     * 查询所有
     * @return
     */
    @RequestMapping("/list")
    public String list(@RequestParam(defaultValue = "1") int page,@RequestParam(defaultValue = "2") int size){

        //调用service查询带有分页的结果集 此方法是使用我们自己封装的分页实现的
        PageResult pageResult = companyService.findPage(page,size);
        request.setAttribute("page",pageResult);
        //转发到列表页面
        return "company/company-list";
    }

service

   @Override
   public PageResult findPage(int page, int size) {
       //1.查询总记录条数
       long total = companyDao.findTotal();
       //2.查询带有分页的结果集
       List<Company> list = companyDao.findPage((page-1)*size,size);
       //3.创建返回值对象.
       PageResult pageResult = new PageResult(total,list,page,size);
       //4.返回
       return pageResult;
   }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶摇的星河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值