JavaWeb分页学习

版权声明:本文为setlilei原创文章 转载请注明来源 https://blog.csdn.net/setlilei/article/details/84935911

把数据封装到PageBean 替代原有数据集合
实体类

public class PageBean<T> {
	//当前页
	private int currentPage;
	//当前页显示的条数
	private int currentCount;
	//总条数
	private int totalCount;
	//总页数
	private int totalPage;
	//每页显示的数据
	private List<T> list = new ArrayList<T>();
	/*
	* geter seter
	*/
}

控制层

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
	UserService service = new UserService();
	
	//模拟当前是第一页
	String currentPageStr = request.getParameter("currentPage");
	if(currentPageStr==null) currentPageStr="1";
	int currentPage = Integer.parseInt(currentPageStr);
	
	//认为每页显示12条
	int currentCount = 12;
	
	PageBean<User> pageBean = null;
	try {
	pageBean = service.findPageBean(currentPage,currentCount);
	} catch (SQLException e) {
	e.printStackTrace();
	}
	
	request.setAttribute("pageBean", pageBean);
	request.getRequestDispatcher("/list.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
	doGet(request, response);
}

业务层

//分页操作
public PageBean findPageBean(int currentPage,int currentCount)
throws SQLException  {
	UserDao dao = new UserDao();	
	//封装一个PageBean并返回
	PageBean pageBean = new PageBean();
	//当前页private int currentPage;
	pageBean.setCurrentPage(currentPage);
	//当前页显示的条数private int currentCount;
	pageBean.setCurrentCount(currentCount);
	//总条数private int totalCount;
	int totalCount = dao.getTotalCount();
	pageBean.setTotalCount(totalCount);
	//总页数private int totalPage;
	/*
	* 公式:总页数=Math.ceil(总条数/当前显示的条数)
	* 12条数据 每页显示5条数据 显示3页
	*/
	int totalPage = (int) Math.ceil(1.0*totalCount/currentCount);
	pageBean.setTotalPage(totalPage);
	//每页显示的数据private List<T> userList = new ArrayList<T>();
	/*
	* 页数与limit起始索引的关系
	* 12条数据 每页显示5条
	* 显示第一页 limit 0,5 limit 0,5
	* 显示第二页 limit 5,5 limit 0,5
	* 索引index = (当前页数-1)*每页显示的条数
	*/
	int index = (currentPage-1)*currentCount;
	
	List<User> userList = dao.findUserListForPageBean(index,currentCount);
	pageBean.setUserList(userList);
	
	return pageBean;
}

持久层

//获取所有用户数据
public List<User> findAllUser() throws SQLException {
	return new QueryRunner(DataSourceUtils.getDataSource())
	.query("select * from user", new BeanListHandler<User>(User.class));
}

//获得全部的用户条数
public int getTotalCount() throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select count(*) from user";
Long query = (Long) runner.query(sql, new ScalarHandler());
return query.intValue();
}

//获得分页的用户数据
public List<User> findUserListForPageBean(int index,int currentCount)
throws SQLException {
	QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
	String sql = "select * from user limit ?,?";
	return runner.query(sql, new BeanListHandler<User>(User.class), index,currentCount);
}
<!--分页 -->
<div style="width: 400px; margin: 0 auto; margin-top: 45px;">
	<ul class="pagination" style="text-align: center; margin-top: 10px;">
		<!-- 上一页 判断当前页是否是第一页 -->
		<c:if test="${pageBean.currentPage==1 }">
			<li class="disabled">
				<a href="javascript:void(0);" aria-label="Previous">
					<span aria-hidden="true">&laquo;</span>
				</a>
			</li>
		</c:if>
		<c:if test="${pageBean.currentPage!=1 }">
			<li>
				<a href="${pageContext.request.contextPath }/userList?currentPage=${pageBean.currentPage-1}" aria-label="Previous">
					<span aria-hidden="true">&laquo;</span>
				</a>
			</li>
		</c:if>	
		
		<c:forEach begin="1" end="${pageBean.totalPage }" var="page">
			<!-- 判断当前页 -->
			<c:if test="${pageBean.currentPage==page }">
				<li class="active"><a href="javascript:void(0);">${page}</a></li>
			</c:if>
			<c:if test="${pageBean.currentPage!=page }">
				<li><a href="${pageContext.request.contextPath }/userList?currentPage=${page}">${page}</a></li>
			</c:if>
		</c:forEach>
		
		<!-- 下一页 判断当前页是否是最后一页 -->
		<c:if test="${pageBean.currentPage==pageBean.totalPage }">
			<li class="disabled">
				<a href="javascript:void(0);" aria-label="Next"> 
					<span aria-hidden="true">&raquo;</span>
				</a>
			</li>
		</c:if>
		<c:if test="${pageBean.currentPage!=pageBean.totalPage }">
			<li>
				<a href="${pageContext.request.contextPath }/userList?currentPage=${pageBean.currentPage+1}" aria-label="Next"> 
					<span aria-hidden="true">&raquo;</span>
				</a>
			</li>
		</c:if>
	
	</ul>
</div>
<!-- 分页结束 -->

猜你喜欢

转载自blog.csdn.net/setlilei/article/details/84935911
今日推荐