servlet jsp 实现分页

来源:互联网 发布:初学尤克里里软件 编辑:程序博客网 时间:2024/06/06 00:48

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

 1.DAO-持久层

public DisciplinePageBean<Discipline> getAll(int pageCode, int pageSize) {Connection connection = null;try {connection = JDBCUtils.getConnection();DisciplinePageBean<Discipline> pageBean = new DisciplinePageBean<Discipline>();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<Discipline> lists = queryRunner.query(connection, sql,new BeanListHandler<Discipline>(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<Discipline> pageBean = disciplineDao.getAll(pageCode, pageSize);request.setAttribute("pageBean", pageBean);request.getRequestDispatcher("/StudyInfo/punishinfo.jsp").forward(request, response);}

3.jsp-表现层
<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><th style="text-align: left;" width="5%">处分编号</th><th style="text-align: left;" width="10%">学号</th><th style="text-align: left;" width="10%">姓名</th><th style="text-align: left;" width="5%">性别</th><th style="text-align: left;" width="10%">专业</th><th style="text-align: left;" width="8%">班级</th><th style="text-align: left;" width="12%">电话</th><th style="text-align: left;" width="7%">类型</th><th style="text-align: left;" width="12%">原因</th><th style="text-align: left;" width="10%">日期</th><th style="text-align: left;" width="12%">操作</th></tr><!-- 如果数据库查询为空 --> <c:if test="${empty pageBean.beanList}"><tr style="height: 28px" class="tdbg" align="left"><td colspan="13" align="left" style="color: Red; font-weight: bold;">未找到违纪信息!</td>        </tr></c:if><!-- 如果不为空 --><c:forEach items="${pageBean.beanList }" var="dis"><tr><td>${dis.dc_id }</td><td>${dis.stu_no }</td><td>${dis.stu_name }</td><td>${dis.stu_sex }</td><td>${dis.m_name }</td><td>${dis.stu_class }</td><td>${dis.stu_phone }</td><td>${dis.dc_type }</td><td>${dis.dc_reason }</td><td>${dis.dc_date }</td><td><a href="javascript:del('${dis.dc_id }');">删除</a> <a href="edit.do?id=${dis.dc_id }">修改</a></td></tr></c:forEach></table><br/><center><c:if test="${!empty pageBean.beanList}">第${pageBean.pageCode}页/共${pageBean.totalPage}页<a href="${pageBean.url }pageCode=1">首页</a><c:if test="${pageBean.pageCode >1 }">    <a href="showInfo.do?pageCode=${pageBean.pageCode-1 }">上一页</a></c:if><c:choose><%--当总页数不足10页时把所有都显示出来 --%><c:when test="${pageBean.pageCode<10 }"><c:set var="begin" value="1" /><c:set var="end" value="${pageBean.totalPage }" /></c:when><%--当总页数大于10页时 --%><c:otherwise><c:set var="begin" value="${pageBean.pageCode-5 }" /><c:set var="end" value="${pageBean.pageCode+4 }" /><%--头溢出 --%><c:if test="${begin < 1 }"><c:set var="begin" value="1" /><c:set var="end" value="10" /></c:if><%--尾溢出 --%><c:if test="${end > pageBean.totalPage }"><c:set var="begin" value="${pageBean.totalPage-9 }" /><c:set var="end" value="${pageBean.totalPage }" /></c:if></c:otherwise></c:choose><c:forEach var="i" begin="${begin }" end="${end }"><c:choose><c:when test="${i eq pageBean.pageCode }">${i }</c:when><c:otherwise><a href="${pageBean.url }pageCode=${i }">${i}</a> </c:otherwise></c:choose></c:forEach><c:if test="${pageBean.pageCode < pageBean.totalPage }">    <a href="${pageBean.url }pageCode=${pageBean.pageCode+1 }">下一页</a></c:if><a href="${pageBean.url }pageCode=${pageBean.totalPage }">尾页</a></c:if></center>

4.实体类-PageBean

public class PageBean<T> {// 当前页码private int pageCode;// 总页数private int totalPage;// 总记录数private int totalRecode;// 每页记录数private int pageSize;// 当前页的记录private List<T> 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<T> getBeanList() {return beanList;}public void setBeanList(List<T> beanList) {this.beanList = beanList;}}


原创粉丝点击