一丶公共类的设置
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);
三 丶最终效果如图