servlet jsp 实现分页
2017-05-27 11:02
323 查看
最近做的一个小的B/S项目中需要用到分页,我也是第一次接触,在查找很多资料后,最终成功实现。要实现分页,必须要确定使用的是哪个数据库,不同的数据库底层实现的分页查询的语句都不同,比如:mysql使用LIMIT,oracle使用ROWNUM。在这里我没写业务层,直接由servlet web层 调dao持久层,最终在表现出显示。
1.DAO-持久层
2. servlet-web层
3.jsp-表现层
4.实体类-PageBean
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> 4000 <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; } }
相关文章推荐
- javaBean+servlet+jsp实现分页效果
- JSP+JavaBean+Servlet实现分页 .
- JSP Servlet 实现模糊动态查询并分页(拼接Sql)
- jsp+servlet实现增删改查,分页,批量删除
- 学习jsp+servlet+jquery实现的一个分页
- java+jsp+servlet实现分页
- JSP+JavaBean+Servlet实现各类列表分页功能
- jsp+servlet+javabean实现数据分页方法完整实例
- JSP+Servlet技术实现分页 首页 下一页 每一页显示10条页码 下一页 尾页 第页/共页 (利用PageBean实现)
- 使用jsp-javabean-servlet实现分页功能
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第四篇:前台首页,新闻分类(体育新闻,科技新闻等),新闻列表分页的实现
- (jsp 和 servlet功能篇) jsp+servlet+javaBean 实现分页代码(mysql 数据库)
- javabean servlet jsp实现分页功能代码解析
- JSP+servlet+javabean实现分页
- JSP+Servlet+JDBC实现数据分页
- jsp+servlet+javabean实现数据分页
- JSP+Servlet+JavaBean实现分页
- 实践---原生jsp+servlet+jdbc+mysql实现分页功能
- java+jsp+servlet实现分页