JavaEE中分页的具体实现

              javaEE分页技术,基于mysql数据库:分类的实现思想请看图片,              

具体的代码:

VO层:

public class PageBean {

	private List list;// 显示的数据集合
	private int totalrecord;// 总记录数据
	private int pagesize;// 每页要显示的数据
	private int totalpage;// 总共有多少页面

	private int currentpage;// 当前页
	private int previouspage;// 上一页
	private int nextpage;// 下一页
	private int[] pagebar;// 页码条

	public int getTotalpage() {
		if (this.totalrecord % this.pagesize == 0) {
			this.totalpage = this.totalrecord / this.pagesize;
		} else {
			this.totalpage = this.totalrecord / this.pagesize + 1;
		}
		return totalpage;
	}

	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

	public int getTotalrecord() {
		return totalrecord;
	}

	public void setTotalrecord(int totalrecord) {
		this.totalrecord = totalrecord;
	}

	public int getPagesize() {
		return pagesize;
	}

	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}

	public int getCurrentpage() {
		return currentpage;
	}

	public void setCurrentpage(int currentpage) {
		this.currentpage = currentpage;
	}

	public int getPreviouspage() {
		if (this.currentpage - 1 < 1) {
			this.previouspage = 1;
		} else {
			this.previouspage = this.currentpage - 1;
		}
		return previouspage;
	}

	public int getNextpage() {
		if (this.currentpage + 1 >= this.totalpage) {
			this.nextpage = this.totalpage;
		} else {
			this.nextpage = this.currentpage + 1;
		}
		return nextpage;
	}

	public int[] getPagebar() {
		int pagebar[]=null;
		int startpage;
		int endpage;
		if (this.totalpage <= 5) {
		     pagebar= new int[this.totalpage];//显示页码条的多少,注意下面的数字也要改动
			startpage = 1;
			endpage = this.totalpage;
		} else {
			 pagebar= new int[5];//显示页码条的多少,注意下面的数字也要改动
			startpage = this.currentpage - 2;
			endpage = this.currentpage + 2;
			if (startpage < 1) {
				startpage = 1;
				endpage = 5;
			}
			if (endpage > this.totalpage) {
				endpage = this.totalpage;
				startpage = this.totalpage - 4;
			}
		}
		int index=0;
		for (int i = startpage; i <= endpage; i++) {
			pagebar[index++] = i;
		}

		this.pagebar = pagebar;
		return pagebar;
	}

}

public class QueryInfo {
      private int currentpage=1;//用户当前看的页
      private int  pagesize=5;//记住用户想看的页面数据多少
      private int  startindex;//记住用户看的页的数据在数据库的起始位置
	public int getCurrentpage() {
		return currentpage;
	}
	public void setCurrentpage(int currentpage) {
		this.currentpage = currentpage;
	}
	public int getPagesize() {
		return pagesize;
	}
	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}
	public int getStartindex() {
		this.startindex=(this.currentpage-1)*this.pagesize;
		return startindex;
	}
	
}

public class QueryResult {

    private List list;//记住用户看的页的数据;
    private int totalrecord;//记住总记录数
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public int getTotalrecord() {
		return totalrecord;
	}
	public void setTotalrecord(int totalrecord) {
		this.totalrecord = totalrecord;
	}

}
servlet层:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	        try {
			    QueryInfo info=	WebUtils .request2Bean(req, QueryInfo.class);
	        	BusinessService service=new BusinessServiceImpl();
	        	PageBean pagebean=service.pageQuery(info);
			    req.setAttribute("pagebean",pagebean);
			    req.getRequestDispatcher("/WEB-INF/jsp/listcustomer.jsp").forward(req, resp);
			} catch (Exception e) {
				e.printStackTrace();
				req.setAttribute("message", "查询失败");
				req.getRequestDispatcher("/message.jsp").forward(req, resp);
			}
	
	}
service层
 public PageBean pageQuery(QueryInfo queryInfo ){
    	//调用DAO获取到页面数据;
    	QueryResult qr = dao.pageQuery(queryInfo.getStartindex(), queryInfo.getPagesize());
    	//根据dao查询结果,生成页面显示需要pagebean
    	PageBean pb=new PageBean();
    	pb.setCurrentpage(queryInfo.getCurrentpage());
    	pb.setList(qr.getList());
    	pb.setPagesize(queryInfo.getPagesize());
    	pb.setTotalrecord(qr.getTotalrecord());
		return pb;
    }
dao层
public QueryResult pageQuery(int startindex, int pagesize) {
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		QueryResult query = new QueryResult();
		try {
			conn = JdbcUtils.getConnection();
			String sql = "select * from customer limit ?,?";
			st = conn.prepareStatement(sql);
			st.setInt(1, startindex);
			st.setInt(2, pagesize);
			rs = st.executeQuery();
			List list = new ArrayList();
			while (rs.next()) {
				Customer c = new Customer();
				c.setBirthday(rs.getDate("birthday"));
				c.setCellphone(rs.getString("cellphone"));
				c.setDescription(rs.getString("description"));
				c.setEmail(rs.getString("email"));
				c.setGender(rs.getString("gender"));
				c.setId(rs.getString("id"));
				c.setName(rs.getString("name"));
				c.setPreference(rs.getString("preference"));
				c.setType(rs.getString("type"));
				list.add(c);
			}
			query.setList(list);
			sql = "select count(*) from customer";
			st = conn.prepareStatement(sql);
			rs = st.executeQuery();
			if (rs.next()) {
				query.setTotalrecord(rs.getInt(1));
			}

			return query;

		} catch (SQLException e) {
			throw new DaoException();
		} finally {
			JdbcUtils.release(conn, st, rs);
		}
	}




猜你喜欢

转载自blog.csdn.net/qq_36753550/article/details/53446292