servlet jsp 实现分页

    最近做的一个小的B/S项目中需要用到分页,我也是第一次接触,在查找很多资料后,最终成功实现。要实现分页,必须要确定使用的是哪个数据库,不同的数据库底层实现的分页查询的语句都不同,比如:mysql使用LIMIT,oracle使用ROWNUM。在这里我没写业务层,直接由servlet web层 调dao持久层,最终在表现出显示。

 1.DAO-持久层

public DisciplinePageBean getAll(int pageCode, int pageSize) {
	Connection connection = null;
	try {
		connection = JDBCUtils.getConnection();
		DisciplinePageBean pageBean = new DisciplinePageBean();
		pageBean.setPageCode(pageCode);
		pageBean.setPageSize(pageSize);

		// 得到总记录数
		String sql = "SELECT COUNT(*) FROM discipline";
		Number number = (Number) queryRunner.query(connection, sql, new ScalarHandler());
		int totalRecode = number.intValue();
		pageBean.setTotalRecode(totalRecode);

		sql = "SELECT dc_id,stu_no,stu_name,stu_sex,m_name,stu_class,stu_phone,dc_type,dc_reason,dc_date FROM discipline d,major m,student s "
				+ "WHERE d.stu_id=s.stu_id AND m.m_id=s.m_id ORDER BY dc_id LIMIT ?,?";
		List lists = queryRunner.query(connection, sql,
				new BeanListHandler(Discipline.class), (pageCode - 1) * pageSize, pageSize);
		pageBean.setBeanList(lists);

		return pageBean;

	} catch (SQLException e) {
		e.printStackTrace();
		throw new DBException("数据库连接错误!");
	} finally {
		if (connection != null) {
			JDBCUtils.release(connection);
		}
	}
}

 2.  servlet-web层
public void findAll(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException{
		
	int pageCode = getPageCode(request);// 获取当前页面传递的页码
	int pageSize = 4;// 设定每页的纪录数
	DisciplinePageBean pageBean = disciplineDao.getAll(pageCode, pageSize);

	request.setAttribute("pageBean", pageBean);
	request.getRequestDispatcher("/StudyInfo/punishinfo.jsp").forward(request, response);
}

3.jsp-表现层

		
		
处分编号 学号 姓名 性别 专业 班级 电话 类型 原因 日期 操作
未找到违纪信息!
${dis.dc_id } ${dis.stu_no } ${dis.stu_name } ${dis.stu_sex } ${dis.m_name } ${dis.stu_class } ${dis.stu_phone } ${dis.dc_type } ${dis.dc_reason } ${dis.dc_date } 删除 修改

第${pageBean.pageCode}页/共${pageBean.totalPage}页 首页 上一页 <%--当总页数不足10页时把所有都显示出来 --%> <%--当总页数大于10页时 --%> <%--头溢出 --%> <%--尾溢出 --%> ${i } ${i} 下一页 尾页

4.实体类-PageBean

public class PageBean {

	// 当前页码
	private int pageCode;
	// 总页数
	private int totalPage;
	// 总记录数
	private int totalRecode;
	// 每页记录数
	private int pageSize;
	// 当前页的记录
	private List beanList;

	private String url;

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public int getPageCode() {
		return pageCode;
	}

	public void setPageCode(int pageCode) {
		this.pageCode = pageCode;
	}

	// 计算总页数
	public int getTotalPage() {
		int totalPage = totalRecode / pageSize;
		return totalRecode % pageSize == 0 ? totalPage : totalPage + 1;
	}
	public int getTotalRecode() {
		return totalRecode;
	}

	public void setTotalRecode(int totalRecode) {
		this.totalRecode = totalRecode;
	}

	public int getPageSize() {
		return pageSize;
	}

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

	public List getBeanList() {
		return beanList;
	}

	public void setBeanList(List beanList) {
		this.beanList = beanList;
	}

}


你可能感兴趣的:(Java)