javaweb的分页(通过jdbc实现的分页)

一丶公共类的设置

        1、Pagebean类
         

   public class PageBean<T> {

                         private Integer startIndex;//开始位置,在查询结果集开始的位置,页数开始位置

                         private Integer pageNumber;//当前页数,通过这个属性变量所有页数,进行上下页的变量输出

                         private Interger pagesize;  //设置每页可以查看条数

                         private  integer  totalCount  //设置总条数(只有这个属性和条的总数有关)

                         private Integer   totalPage   //设置总页数

                         private List<T> result;    //结果集

              public Integer getStartIndex() {
               //通过当前页和每页条数计算开始位置

            startindex = (pagenumber - 1)*pagesize
                   return startIndex;
        }    
    public void setStartIndex(Integer startIndex) {
              this.startIndex = startIndex;
    }
    public Integer getPageNumber() {
            return pageNumber;
    }
    public void setPageNumber(Integer pageNumber) {
            this.pageNumber = pageNumber;
    }
    public Integer getPageSize() {
            return pageSize;
    }    
    public void setPageSize(Integer pageSize) {
            this.pageSize = pageSize;
    }
    public Integer getTotalCount() {
            return totalCount;
    }
    public void setTotalCount(Integer totalCount) {
            this.totalCount = totalCount;
    }

    public Integer getTotalPage() {
           totalPage=getTotalCount()%getPageSize()==0?getTotalCount()/getPageSize()                                                                         : getTotalCount()/getPageSize()+1;

            return totalPage;
    }
    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }
    public List<T> getResult() {
        return result;
    }
    public void setResult(List<T> result) {
        this.result = result;
    }
    public PageBean() {
        super();
        // TODO Auto-generated constructor stub
    }
    public PageBean(Integer startIndex, Integer pageNumber, Integer pageSize, Integer totalCount, Integer totalPage,
            List<T> result) {
        super();
        this.startIndex = startIndex;
        this.pageNumber = pageNumber;
        this.pageSize = pageSize;
        this.totalCount = totalCount;
        this.totalPage = totalPage;
        this.result = result;
    }
    @Override
    public String toString() {
        return "PageBean [startIndex=" + startIndex + ", pageNumber=" + pageNumber + ", pageSize=" + pageSize
                + ", totalCount=" + totalCount + ", totalPage=" + totalPage + ", result=" + result + "]";
    }
       
public class Userdao {
    
	/**
	 *   查询总页数
	 * @return
	 */
	public  Integer getsum() {
	   Connection conn=Dbutils.getConnection();
	   Integer count=0;
	   String sql="select count(1) from tb_brand";
	   try {
		PreparedStatement ps =conn.prepareStatement(sql);
		ResultSet rs =ps.executeQuery();
		while(rs.next()) {
			count=rs.getInt(1);//获取总页数
		}
		rs.close();
		ps.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		Dbutils.closeConnection();
	}
	  return  count;
	
	}
	
	/**
	 * 查询结果集
     * 根据limit 查询记录数
	 * 
	 */
	public List<Brand> getBrands (PageBean pb) {
		List<Brand> list=new ArrayList<Brand>();
		Connection conn =Dbutils.getConnection();
	    String sql="select * from tb_brand limit ?,?";
	    
		try {
			PreparedStatement ps =conn.prepareStatement(sql);
			ps.setInt(1, pb.getStartIndex());//获取开始的页数(5的倍数)
			ps.setInt(2, pb.getPageSize());//查询的大小(5)
			ResultSet rs =ps.executeQuery();
			while(rs.next()) {
				Brand brand =new Brand();
				brand.setId(rs.getInt("id"));
				brand.setName(rs.getString("name"));
				brand.setImage(rs.getString("image"));
				brand.setLetter(rs.getString("letter"));
				list.add(brand);
			}
			ps.close();
			rs.close();
			 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			Dbutils.closeConnection();
		}
			return list;
	}	
}

注:结果集就是相当于把查询到的全部的数据放到结果集里面,这个结果集最终会封装到到pagebean里面

二丶前台展示页面

     便利pagebean的结果集进行查询

<td colspan="5">
//pagenumber为当前页数,如果当前也是不是1,那么就会有上一页
     <c:if test="${pb.pageNumber != 1 }">
     <a href="${pageContext.request.contextPath}/ShowAll?pageNumber=${pb.pageNumber - 1}">上一页</a>
     
 	</c:if>
 	//便利总页数,展示所有的页数
 	<c:forEach begin="1" end="${pb.totalPage }" var="i">
    //给每一页加一个所有的点击数据,获取每一页的记录数
 	<a href="${pageContext.request.contextPath}/ShowAll?pageNumber=${i }">${i }</a>
 		</c:forEach>
    //如果是最后一页就不会显示下一页
 	<c:if test="${pb.totalPage !=pb.pageNumber }">
 	<a href="${pageContext.request.contextPath}/ShowAll?pageNumber=${pb.pageNumber + 1}">下一页</a>
 	</c:if>
    </td>
	// TODO Auto-generated method stub
		Userdao userdao =new Userdao();
		PageBean<Brand> pb =new PageBean();
        //获取当前页,如果是空就设置为1
        String pageNumber =req.getParameter("pageNumber");
        //注:之前没有设置这个,一直报数字格式异常
		if ("".equals(pageNumber) || pageNumber==null) {
			pageNumber="1";
			pb.setPageNumber(Integer.parseInt(pageNumber));
		}
        //设置当前页,在pagebean封装类进行了判断显示当前页,
		pb.setPageNumber(Integer.parseInt(pageNumber));
		//设置每页展示长度
		pb.setPageSize(5);
		Integer totalCount=userdao.getcount();
        //设置总条数,根据总条数和展示长度进行开始startindex的展示位5的倍数
		pb.setTotalCount(totalCount);
		List<Brand> list=userdao.getBrands(pb);
		pb.setResult(list);
		
		req.setAttribute("pb", pb);

三 丶最终效果如图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值