您好,登錄后才能下訂單哦!
本文主要給大家簡單講講javaweb是如何編寫分頁mysql的,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望javaweb是如何編寫分頁mysql的這篇文章可以給大家?guī)硪恍嶋H幫助。
1.封裝PageBean
import java.util.List; /** * 分頁的JavaBean * @author Administrator */ public class PageBean<T> { // 當(dāng)前頁 private int pageCode; // 總頁數(shù) // private int totalPage; // 總記錄數(shù) private int totalCount; // 每頁顯示的記錄條數(shù) private int pageSize; // 每頁顯示的數(shù)據(jù) private List<T> beanList; public int getPageCode() { return pageCode; } public void setPageCode(int pageCode) { this.pageCode = pageCode; } /** * 調(diào)用getTotalPage() 獲取到總頁數(shù) * JavaBean的屬性規(guī)定:totalPage是JavaBean是屬性 ${pageBean.totalPage} * @return */ public int getTotalPage() { // 計算 int totalPage = totalCount / pageSize; // 說明整除 if(totalCount % pageSize == 0){ return totalPage; }else{ return totalPage + 1; } } /*public void setTotalPage(int totalPage) { this.totalPage = totalPage; }*/ public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } 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; } }
2.Servlet
/** * 獲取當(dāng)前頁 *如果用戶沒有傳,默認(rèn)是第一頁,如果傳了,就是幾 * @param request * @return */ public int getPageCode(HttpServletRequest request){ String pc = request.getParameter("pc"); // 判斷 if(pc == null || pc.trim().isEmpty()){ return 1; } return Integer.parseInt(pc); }
/** * 分頁查詢 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 處理當(dāng)前頁 * 處理每頁顯示的記錄條數(shù) */ // 當(dāng)前頁 int pageCode = getPageCode(request); // 處理每頁顯示的記錄條數(shù) int pageSize = 4; try { // 調(diào)用業(yè)務(wù)層,分頁查詢 PageBean<Product> page = new ProductService().findByPage(pageCode,pageSize); // 存入 request.setAttribute("page", page); // 轉(zhuǎn)發(fā) request.getRequestDispatcher("/jsp/pages.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } }
3.service
/** * 分頁查詢 * @param pageCode * @param pageSize * @return * @throws SQLException */ public PageBean<Product> findByPage(int pageCode, int pageSize) throws SQLException { return new ProductDao().findByPage(pageCode,pageSize); }
4.dao
/** * 分頁查詢 * * @param pageCode * @param pageSize * @return * @throws SQLException */ public PageBean<Product> findByPage(int pageCode, int pageSize) throws SQLException { PageBean<Product> page = new PageBean<>(); // 屬性是空的 page.setPageCode(pageCode); page.setPageSize(pageSize); QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); // ScalarHandler 處理聚合函數(shù) long count = (long) qr.query("select count(*) from product", new ScalarHandler()); // 設(shè)置總記錄條數(shù) page.setTotalCount((int) count); // limit a,b a = (當(dāng)前頁-1) * b List<Product> beanList = qr.query("select * from product limit ?,?", new BeanListHandler<Product>(Product.class), (pageCode - 1) * pageSize, pageSize); // 每頁顯示的數(shù)據(jù) page.setBeanList(beanList); return page; }
5.utils
public class JdbcUtils { // 成員變量,創(chuàng)建了C3P0的連接池(連接池中已經(jīng)存在連接了...) private static final ComboPooledDataSource DATASOURCE = new ComboPooledDataSource(); /** * 返回的是C3P0的連接池 * @return */ public static DataSource getDataSource(){ return DATASOURCE; } /** * 獲取連接,返回連接 * @return */ public static Connection getConnection(){ Connection conn = null; try { // 從連接池中來獲取連接,conn 是增強(qiáng)過的連接 conn = DATASOURCE.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 釋放資源 * @param stmt * @param conn */ public static void release(Statement stmt,Connection conn){ if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { // 已經(jīng)變成了歸還了... conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 釋放資源 * @param stmt * @param conn */ public static void release(ResultSet rs,Statement stmt,Connection conn){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { // 把close()給修改了,原來是銷毀連接,現(xiàn)在讓方法變成歸還連接。 conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
6.jsp頁面
<table border="1" width="100%"> <tr> <th>序號</th> <th>圖片</th> <th>名稱</th> <th>市場價格</th> <th>商城價格</th> <th>商品日期</th> </tr> <c:forEach var="p" items="${ page.beanList }" varStatus="vs"> <tr align="center"> <td>${ vs.count }</td> <td> <img src="${ pageContext.request.contextPath }/${p.pimage}" width="100px" height="100px"> </td> <td>${ p.pname }</td> <td>${ p.market_price }</td> <td>${ p.shop_price }</td> <td>${ p.pdate }</td> </tr> </c:forEach> 分頁條 <tr> <th colspan="6"> 第${ page.pageCode }頁/共${ page.totalPage }頁 <a href="${ pageContext.request.contextPath }/findByPage?pc=1">首頁</a> <c:if test="${ page.pageCode > 1 }"> <a href="${ pageContext.request.contextPath }/findByPage?pc=${page.pageCode - 1}">上一頁</a> </c:if> begin和end值是變化的,設(shè)置begin和end的值 邏輯: * 如果總頁數(shù)<=10頁,讓begin=1 end=總頁數(shù) * 如果總頁數(shù) > 10頁,begin=當(dāng)前頁-5 ,end = 當(dāng)前頁 + 4 * 頭溢出:如果begin<1,出現(xiàn)了頭溢出了,讓begin=1 end=10 * 尾溢出:如果end > 總頁數(shù),讓begin=總頁數(shù)-9 end=總頁數(shù) <c:choose> <c:when test="${ page.totalPage <= 10 }"> <c:set var="begin" value="1"/> <c:set var="end" value="${ page.totalPage }"/> </c:when> <c:otherwise> <c:set var="begin" value="${ page.pageCode - 5 }"/> <c:set var="end" value="${ page.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 > page.totalPage }"> <c:set var="begin" value="${ page.totalPage - 9 }"/> <c:set var="end" value="${ page.totalPage }"/> </c:if> </c:otherwise> </c:choose> <c:forEach var="i" begin="${ begin }" end="${ end }"> <a href="${ pageContext.request.contextPath }/findByPage?pc=${i}">[${ i }]</a> </c:forEach> <c:if test="${ page.pageCode < page.totalPage }"> <a href="${ pageContext.request.contextPath }/findByPage?pc=${page.pageCode + 1}">下一頁</a> </c:if> <a href="${ pageContext.request.contextPath }/findByPage?pc=${page.totalPage}">尾頁</a> </th> </tr></table>
javaweb是如何編寫分頁mysql的就先給大家講到這里,對于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會捕捉一些行業(yè)新聞及專業(yè)知識分享給大家的。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。