1、分頁Bean類 Pagejavascript
package com.yuu.ssh.common; import java.io.Serializable; public class Page implements Serializable { private int pageNow = 1; // 當前頁數 private int pageSize = 10; // 每頁顯示記錄的條數 private int totalCount; // 總的記錄條數 private int totalPageCount; // 總的頁數 private int startPos; // 開始位置,從0開始 //----*****---如下-4 個參數能夠省略,有須要時再加--***----------// private boolean hasFirst;// 是否有首頁 private boolean hasPre;// 是否有前一頁 private boolean hasNext;// 是否有下一頁 private boolean hasLast;// 是否有最後一頁 //-----------*************--------------------// public Page() { super(); // TODO Auto-generated constructor stub } public Page(int totalCount, int pageNow) { this.totalCount = totalCount; this.pageNow = pageNow; } // 獲取數據總記錄條數 public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } // 獲取當前頁碼 public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } // 獲取每頁數據條目數 public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } // 得到一共有多少頁碼數 public int getTotalPageCount() { totalPageCount = getTotalCount() / getPageSize(); return (totalCount % pageSize == 0) ? totalPageCount : totalPageCount + 1; } // 獲取每頁的起始條目號碼 public int getStartPos() { return (pageNow - 1) * pageSize; } public void setTotalPageCount(int totalPageCount) { this.totalPageCount = totalPageCount; } public void setStartPos(int startPos) { this.startPos = startPos; } //-----------******如下方法可省略*******--------------------// /** * 是不是第一頁 */ public boolean isHasFirst() { return (pageNow == 1) ? false : true; } public void setHasFirst(boolean hasFirst) { this.hasFirst = hasFirst; } public boolean isHasPre() { // 若是有首頁就有前一頁,由於有首頁就不是第一頁 return isHasFirst() ? true : false; } public void setHasPre(boolean hasPre) { this.hasPre = hasPre; } public boolean isHasNext() { // 若是有尾頁就有下一頁,由於有尾頁代表不是最後一頁 return isHasLast() ? true : false; } public void setHasNext(boolean hasNext) { this.hasNext = hasNext; } public boolean isHasLast() { // 若是不是最後一頁就有尾頁 return (pageNow == getTotalCount()) ? false : true; } public void setHasLast(boolean hasLast) { this.hasLast = hasLast; } //-----------*************--------------------// }
2、後臺分頁方法html
一、Servlet 後臺JDBC分頁代碼示例java
public List<Staff> findByPage(int pageNumber, int pageSize){ Connection conn=null; PreparedStatement ps=null; String sql= "select * from tb_staff limit ?,?"; // limit x,y x表明每頁的起始記錄數--表明第(x+1)頁,每頁以 x*pageSize開始; y表明每頁顯示y條數據(pageSize). ResultSet rs=null; List<Staff> list=null; Dept dept=null; Job job=null; IDeptDao dao=null; IJobDao dao_j=null; try { conn=JDBCUtils.getConnection(); ps=conn.prepareStatement(sql); ps.setInt(1, pageNumber); ps.setInt(2, pageSize); ps.executeUpdate(); list = new ArrayList<Staff>(); while(rs.next()){ int did=rs.getInt(3); dept=dao.findDeptById(did); System.out.println(dept); int jid=rs.getInt(4); job=dao_j.findJobById(jid); Staff staff = new Staff(); staff.setId(rs.getLong(1)); staff.setId(rs.getInt(2)); staff.setName(rs.getString(3)); staff.setDept(dept); staff.setJob(job); staff.setDate(rs.getString(6)); staff.setSalary(rs.getDouble(7)); staff.setEmail(rs.getString(8)); staff.setPhone(rs.getString(9)); list.add(staff); System.out.println(list.size()); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.close(rs, ps, conn); } return list; }
2. Hibernate持久層分頁代碼示例sql
/** * 查詢數據庫員工表中的總記錄數 * @return */ int getCountEmp(); @Override public int getCountEmp() { // 方法一: Query q = sessionFactory.getCurrentSession().createQuery("from Employee"); //總記錄數 ScrollableResults scroll = q.scroll(); // 獲得滾動的結果集 scroll.last(); // 滾動到最後一行 int totalCount = scroll.getRowNumber() + 1;// 獲得滾到的記錄數,即總記錄數 // 方法二:聚合函數統計 // Query q = session.createQuery("select count(*) from Employee"); // Long num = (Long) q.uniqueResult(); // System.out.println(num); return totalCount; } /** * 查詢所有員工信息,分頁顯示 * @param index 起始記錄 * @param count 每頁顯示記錄條數 * @return */ List<Employee> getAll(int index, int count); @SuppressWarnings("unchecked") @Override public List<Employee> getAll(int index, int count) { Session session = sessionFactory.getCurrentSession(); Query q = session.createQuery("from Employee"); // 設置分頁參數 q.setFirstResult(index); q.setMaxResults(count); // 查詢 // q.list(); return q.list(); }
3.MyBatis持久層分頁代碼示例數據庫
int countMedia(); //統計出全部的視頻數據量 <select id="countMedia" resultType="java.lang.Integer" > select count(*) from t_media </select> List<TMediaCustom> getMediaPage(Page page); //查詢帶分頁視頻列表 <select id="getMediaPage" parameterType="com.yuu.ssm.common.Page" resultMap="ResultMapWithBLOBs"> select id,vname, src_id, pic_id, type_id, descript, distrit, keyword, uptime, uploader, playcount, downloadcount, collectcount from t_media limit #{startPos}, #{pageSize} </select>
3、JSP頁面分頁代碼示例session
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <script type="text/javascript"> function jumpToPage(pageNo) { window.location.href = "<%=request.getContextPath()%>/emp_pagelist.action?pageNow="+pageNo; } </script> <table id="tb_fy" border="1" align="center" width="80%" cellpadding="5" cellspacing="0"> <tr> <td> <strong>頁次:${page.pageNow }/${page.totalPageCount }</strong> <span style="font-size: 12">共${page.totalCount }條記錄</span> </td> <td> <a href="emp_pagelist.action?pageNow=1">首頁</a> </td> <td> <c:choose> <c:when test="${page.pageNow - 1 > 0}"> <a href="emp_pagelist.action?pageNow=${page.pageNow - 1}">上一頁</a> </c:when> <c:when test="${page.pageNow - 1 <= 0}"> <a href="emp_pagelist.action?pageNow=1">上一頁</a> </c:when> </c:choose> </td> <td>當前頁碼:<select name="currentPageNo"> <option value ="1">${page.pageNow}</option> </select> </td> <td> <!-- 顯示超連接 --> <c:if test="${page.pageNow>0 }"> <c:forEach begin="${page.pageNow }" end="${(page.pageNow+6)<=page.totalPageCount?(page.pageNow+6):page.totalPageCount}" var="i"> <a href="javascript:jumpToPage(${i })">[${i }]</a> </c:forEach> </c:if> </td> <td> <c:choose> <c:when test="${page.pageNow + 1 < page.totalPageCount}"> <a href="emp_pagelist.action?pageNow=${page.pageNow + 1}">下一頁</a> </c:when> <c:when test="${page.pageNow + 1 >= page.totalPageCount}"> <a href="emp_pagelist.action?pageNow=${page.totalPageCount}">下一頁</a> </c:when> </c:choose> </td> <td><a href="emp_pagelist.action?pageNow=${page.totalPageCount}">末頁</a> </td> <td>一共有 : ${page.totalPageCount} 頁</td> </tr> </table>
經常使用:在Action/Servlet中快速分頁.app
private static final int pageSize = 8; // 每頁記錄條數ssh
rowCount 爲數據庫中,總的記錄條數。jsp
int pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize) : (rowCount / pageSize + 1);//總共有多少頁。
logger.info("--總頁數--" + pageCount+",--當前頁爲-->"+pageNow);ide
pageNow 爲 當前 顯示 頁碼,須要從頁面傳值到後臺獲取。
public class RedPayOrderQueryAction extends BaseAction { private static Logger logger = LoggerFactory.getLogger(RedPayOrderQueryAction.class); private IRedPayService redPayService; private static final int pageSize = 8; public IRedPayService getRedPayService() { return redPayService; } public void setRedPayService(IRedPayService redPayService) { this.redPayService = redPayService; } public ActionForward getAllOrderInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setCharacterEncoding("UTF-8"); String phoneNo = request.getParameter("phoneNo").trim(); logger.info("手機號碼爲:"+phoneNo); String orderNo = request.getParameter("orderNo").trim(); logger.info("訂單號爲:"+orderNo); String s = request.getParameter("status"); logger.info("訂單狀態爲:"+s); if(phoneNo==null){ phoneNo=""; //以防請求路徑沒有phoneNo參數。 } if(orderNo==null){ orderNo=""; //以防請求路徑沒有orderNo參數。 } int pageNow = Integer.valueOf(request.getParameter("pageNow")); // 當前頁碼 int countNow = (pageNow - 1) * pageSize; // 每頁起始記錄數。 String beginTime = request.getParameter("beginTime"); logger.info("查詢開始時間-->"+beginTime); String endTime = request.getParameter("endTime"); logger.info("查詢結束時間-->"+endTime); if(beginTime==null||beginTime.equals("")){ beginTime="2000-01-01 00:00:00"; logger.info("頁面查詢沒有設置開始查詢時間,此時開始時間默認值設置爲:"+beginTime); } if(endTime==null||endTime.equals("")){ Date date = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); endTime = df.format(date); logger.info("頁面查詢沒有設置結束查詢時間,此時結束時間默認值設置爲:"+endTime); } int rowCount = 0; List<RedPacketPay>orderList =null; if(phoneNo.length()>0){ // 根據用戶手機號碼查詢。 rowCount = redPayService.getCountNumByPhone(phoneNo, beginTime, endTime,s).size(); // 總共記錄數。 orderList =redPayService.findOrderPageByPhone(phoneNo, beginTime, endTime, countNow, pageSize,s); } else if(orderNo.length()>0){ // 根據訂單號碼查詢。 rowCount = redPayService.findOrderByOrderNo(orderNo, beginTime, endTime,s).size(); orderList = redPayService.findOrderPageByOrderNo(orderNo, beginTime, endTime, countNow, pageSize,s); } else{ // 查詢全部訂單。 rowCount = redPayService.getCountNumByAllOrder(beginTime, endTime,s); // 總記錄條數。 orderList=redPayService.findAllOrder(beginTime,endTime,countNow, pageSize,s); } int pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize) : (rowCount / pageSize + 1);//總共有多少頁。 logger.info("--總頁數--" + pageCount+",--當前頁爲-->"+pageNow); request.setAttribute("orderList", orderList); logger.info("--訂單列表orderList的值--" + orderList); request.setAttribute("phoneNo", phoneNo); request.setAttribute("orderNo", orderNo); request.setAttribute("pageNow", pageNow); request.setAttribute("pageCount", pageCount); request.setAttribute("beginTime", beginTime); request.setAttribute("endTime", endTime); request.setAttribute("statusCode", s); return mapping.findForward("success"); } }
JSP頁面寫法:
====================================================================================== <div id="d3" style="margin-left: 20px;text-align: center;"> <div id="d_one"> <!-- 顯示首頁 --> <c:choose> <c:when test="${pageNow==1}"> 首頁 </c:when> <c:when test="${pageNow==null}"> 首頁 </c:when> <c:otherwise> <a href="javascript:jumpToPage(1,'${userName}','${caseStatus}')">首頁</a> </c:otherwise> </c:choose> <!-- 顯示上一頁 --> <c:choose> <c:when test="${pageNow>1}"> <a href="javascript:jumpToPage(${pageNow-1 },'${userName}','${caseStatus}')">上一頁</a> </c:when> <c:otherwise> 上一頁 </c:otherwise> </c:choose> <!-- 顯示下一頁 --> <c:choose> <c:when test="${pageNow < pageCount}"> <a href="javascript:jumpToPage(${pageNow+1 },'${userName}','${caseStatus}')">下一頁</a> </c:when> <c:otherwise> 下一頁 </c:otherwise> </c:choose> <!-- 顯示尾頁 --> <c:choose> <c:when test="${pageNow == pageCount}"> 尾頁 </c:when> <c:otherwise> <a href="javascript:jumpToPage(${pageCount },'${userName}','${caseStatus}')">尾頁</a> </c:otherwise> </c:choose> </div> <div id="d_two"> <c:choose> <c:when test="${pageNow !=null }"> <strong>頁次:${pageNow }/${pageCount }</strong> </c:when> <c:otherwise> <strong>頁次:0/0</strong> </c:otherwise> </c:choose> <c:choose> <c:when test="${pageNow !=null }"> <span style="font-size: 12">共${rowCount }條記錄</span> </c:when> <c:otherwise> <span style="font-size: 12">共0條記錄</span> </c:otherwise> </c:choose> </div> </div> =========================================================================================== <table id="tb_fy" border="1" align="center" width="80%" cellpadding="5" cellspacing="0"> <tr> <td> <strong>頁次:${page.pageNow }/${page.totalPageCount }</strong> <span style="font-size: 12">共${page.totalCount }條記錄</span> </td> <td> <a href="emp_pagelist.action?pageNow=1">首頁</a> </td> <td> <c:choose> <c:when test="${page.pageNow - 1 > 0}"> <a href="emp_pagelist.action?pageNow=${page.pageNow - 1}">上一頁</a> </c:when> <c:when test="${page.pageNow - 1 <= 0}"> <a href="emp_pagelist.action?pageNow=1">上一頁</a> </c:when> </c:choose> </td> <td>當前頁碼:<select name="currentPageNo"> <option value ="1">${page.pageNow}</option> </select> </td> <td> <!-- 顯示超連接 --> <c:if test="${page.pageNow>0 }"> <c:forEach begin="${page.pageNow }" end="${(page.pageNow+6)<=page.totalPageCount?(page.pageNow+6):page.totalPageCount}" var="i"> <a href="javascript:jumpToPage(${i })">[${i }]</a> </c:forEach> </c:if> </td> <td> <c:choose> <c:when test="${page.pageNow + 1 < page.totalPageCount}"> <a href="emp_pagelist.action?pageNow=${page.pageNow + 1}">下一頁</a> </c:when> <c:when test="${page.pageNow + 1 >= page.totalPageCount}"> <a href="emp_pagelist.action?pageNow=${page.totalPageCount}">下一頁</a> </c:when> </c:choose> </td> <td><a href="emp_pagelist.action?pageNow=${page.totalPageCount}">末頁</a> </td> <td>一共有 : ${page.totalPageCount} 頁</td> </tr> </table> =============================================================================== <table cellpadding="0" cellspacing="0" border="0" width="100%" style="font-size: 12px; margin-left: 20px;"> <tr height="50px" align="center" style="background: #87CEEB;font-size: 15px;"> <td width="3%"> 序號 </td> <td width="12%"> 案件號 </tr> <c:forEach items="${caseList}" var="c" varStatus="status"> <tr height="30px;" <c:if test="${status.count%2==0}"> bgcolor="#ffffff" </c:if> align="center"> <td>${status.index + pageNow*10-10+1}</td>