封装一个分页功能工具

封装分页功能的准备工作

1、首先需要一个对数据库增、删、改、查的工具类DBUtils(已有)
2、一个页面的实体类Page
3、实现分页功能的一个类PageService

Page实体类

/**
 * 这是一个通用分页功能
 * @author Administrator
 *
 */
public class Page {
	/**当前页*/
	private int pageNow;
	/**每页记录数*/
	private int pageSize;
	
	
	
	/**首页*/
	private int first = 1;
	/**上一页*/
	private int prev;
	/**下一页*/
	private int next;
	/**最后一页*/
	private int last;
	/**总记录数*/
	private int totalNum;
	/**总页数*/
	private int totalPage;
	
	/**开始显示的位置*/
	private int begin;
	/**结束显示的位置*/
	private int end;
	
	/**当前数据*/
	private List data;

	public int getPageNow() {
		return pageNow;
	}

	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getFirst() {
		return first;
	}

	public void setFirst(int first) {
		this.first = first;
	}

	public int getPrev() {
		return prev;
	}

	public void setPrev(int prev) {
		this.prev = prev;
	}

	public int getNext() {
		return next;
	}

	public void setNext(int next) {
		this.next = next;
	}

	public int getLast() {
		return last;
	}

	public void setLast(int last) {
		this.last = last;
	}

	public int getTotalNum() {
		return totalNum;
	}

	public void setTotalNum(int totalNum) {
		this.totalNum = totalNum;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getBegin() {
		return begin;
	}

	public void setBegin(int begin) {
		this.begin = begin;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	public List getData() {
		return data;
	}

	public void setData(List data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return "Page [pageNow=" + pageNow + ", pageSize=" + pageSize + ", first=" + first + ", prev=" + prev + ", next="
				+ next + ", last=" + last + ", totalNum=" + totalNum + ", totalPage=" + totalPage + ", begin=" + begin
				+ ", end=" + end + ", data=" + data + "]";
	}
	
	
}

PageService的实现

public  class PageService {

	public static Page paging(String pageNowValue,int pageSize){
		Page p = new Page();
		
		int pageNow=Integer.parseInt(pageNowValue);
		//拿到当前页数并设置page
		p.setPageNow(pageNow);
		//设置每页记录数
		p.setPageSize(pageSize);
		//设置上一页
		p.setPrev(pageNow-1);
		//设置下一页
		p.setNext(pageNow+1);
		
		int totalNum = getTotalNum();
		//设置总记录数
		p.setTotalNum(totalNum);
		
		int totalPage=0;
		if(totalNum % pageSize == 0){
			//设置总页数
			totalPage = totalNum / pageSize;
		}else{
			//设置总页数
			totalPage = totalNum / pageSize + 1;
		}
		//设置最后一页
		p.setLast( totalPage);
		p.setTotalPage(totalPage);
		
		//防止页数越界
		if(pageNow < 1){
			pageNow = 1;
			p.setPrev(1);
		}
		if(pageNow > totalPage){
			pageNow = totalPage;
			p.setNext(totalPage);
		}
		//重新设置pageNow
		p.setPageNow(pageNow);
		
		
		if(pageNow < 3){
			//开始的位置
			p.setBegin(p.getFirst());
			//结束的位置
			p.setEnd(pageNow+2);
		}else if(pageNow > 3 && pageNow < p.getLast()-3){
			p.setBegin(pageNow-2);
			p.setEnd(pageNow+2);
		}else{
			//开始的位置
			p.setBegin(pageNow-2);
			//结束的位置
			p.setEnd(p.getLast());
		}
		
		
		//查询当前页的数据并设置
		List data = findByPage( pageNow, pageSize);
		p.setData(data);
		//放回结果
		return p;
	}

	/**获取总记录数*/
	private static int getTotalNum() {
		String sql = "select count(1) from files";
		return DButils.getTotalNum(sql);	
	}
	/**
	 * 查询的数据
	 * @param sql
	 * @param pageNow
	 * @param pageSize
	 * @return
	 */
	private static List findByPage(int pageNow,int pageSize){
		String sql = "select * from files limit ?,?";
		
		return  DButils.selectList(Files.class, sql, (pageNow-1)*pageSize,pageSize);
	}
}

调用PageService

@WebServlet("/files")
//自己写的一个BaseServlet继承HttpServlet,是对请求的转发或重定向的封装
public class FilesServlet extends BaseServlet{
	
	public String queryAll(HttpServletRequest request,HttpServletResponse response){
		
		//获取当前页面值
		String s = request.getParameter("pageNow");
		//调用分页功能服务
		Page paging = PageService.paging( s, 5);
		//把数据传向页面
		request.setAttribute("page", paging);
		//请求转发到list.jsp页面
		return "list.jsp";
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值