--------------------------------------------------------------------------------------- ÆäÀÌ¡ Ŭ·¡½º ¼Ò½ºÄÚµå : --------------------------------------------------------------------------------------- public class PageNavigation { private boolean isPrevPage; private boolean isNextPage; protected int nowPage; protected int rowTotal; protected int blockList; protected int blockPage; private int totalPage; private int startPage; private int endPage; private int startRow; private int endRow; // ÆäÀÌÁö¸¦ °è»êÇÏ´Â »ý¼ºÀÚ public PageNavigation(int nowPage, int rowTotal, int blockList, int blockPage) { super(); // °¢Á¾ Ç÷¡±×¸¦ ÃʱâÈ­ isPrevPage = false; isNextPage = false; // ÀÔ·ÂµÈ Àüü ¿­ÀÇ ¼ö¸¦ ÅëÇØ Àüü ÆäÀÌÁö ¼ö¸¦ °è»êÇÑ´Ù this.totalPage = (int) Math.ceil((double)rowTotal / (double)blockList); // ÇöÀç ÆäÀÌÁö°¡ Àüü ÆäÀÌÁö¼öº¸´Ù Ŭ°æ¿ì Àüü ÆäÀÌÁö¼ö·Î °­Á¦·Î Á¶Á¤ÇÑ´Ù if(nowPage > this.totalPage) { nowPage = this.totalPage; } // DBÀÔ·ÂÀ» À§ÇÑ ½ÃÀÛ°ú Á¾·á°ªÀ» ±¸ÇÑ´Ù this.startRow = (int) (nowPage - 1) * blockList; this.endRow = (int) this.startRow + blockList - 1; // ½ÃÀÛÆäÀÌÁö¿Í Á¾·áÆäÀÌÁöÀÇ °ªÀ» ±¸ÇÑ´Ù this.startPage = (int) ((nowPage - 1) / blockPage) * blockPage + 1; this.endPage = (int) this.startPage + blockPage - 1; // ¸¶Áö¸· ÆäÀÌÁö°ªÀÌ Àüü ÆäÀÌÁö°ªº¸´Ù Ŭ °æ¿ì °­Á¦ Á¶Á¤ if(this.endPage > this.totalPage) { this.endPage = totalPage; } // ½ÃÀÛ ÆäÀÌÁö°¡ 1º¸´Ù Ŭ °æ¿ì ÀÌÀü ÆäÀÌ¡ÀÌ °¡´ÉÇÑ°ÍÀ¸·Î °£ÁÖÇÑ´Ù if(this.startPage > 1) { this.isPrevPage = true; } // Á¾·áÆäÀÌÁö°¡ ÀüüÆäÀÌÁöº¸´Ù ÀÛÀ»°æ¿ì ´ÙÀ½ ÆäÀÌ¡ÀÌ °¡´ÉÇÑ°ÍÀ¸·Î °£ÁÖÇÑ´Ù if(this.endPage < this.totalPage) { this.isNextPage = true; } // ±âŸ °ªÀ» ÀúÀåÇÑ´Ù this.nowPage = nowPage; this.rowTotal = rowTotal; this.blockList = blockList; this.blockPage = blockPage; } public void Debug() { System.out.println("Total Page : " + this.totalPage + " / Start Page : " + this.startPage + " / End Page : " + this.endPage); System.out.println("Total Row : " + this.rowTotal + " / Start Row : " + this.startRow + " / End Row : " + this.endRow); } // Àüü ÆäÀÌÁö ¼ö¸¦ ¾Ë¾Æ¿Â´Ù public int getTotalPage() { return totalPage; } // ½ÃÀÛ Row°ªÀ» °¡Á®¿Â´Ù public int getStartRow() { return startRow; } // ¸¶Áö¸· Row°ªÀ» °¡Á®¿Â´Ù public int getEndRow() { return endRow; } // Block Row Å©±â¸¦ °¡Á®¿Â´Ù public int getBlockSize() { return blockSize; } // ½ÃÀÛÆäÀÌÁö°ªÀ» °¡Á®¿Â´Ù public int getStartPage() { return startPage; } // ¸¶Áö¸· ÆäÀÌÁö°ªÀ» °¡Á®¿Â´Ù public int getEndPage() { return endPage; } // ÀÌÀüÆäÀÌÁöÀÇ Á¸ÀçÀ¯¹«¸¦ °¡Á®¿Â´Ù public boolean isPrevPage() { return isPrevPage; } // ´ÙÀ½ÆäÀÌÁöÀÇ Á¸ÀçÀ¯¹«¸¦ °¡Á®¿Â´Ù public boolean isNextPage() { return isNextPage; } } --------------------------------------------------------------------------------------- ¼­ºí¸´(Controller) ¼Ò½ºÄÚµå : --------------------------------------------------------------------------------------- // ¸®½ºÆ®¸¦ °¡Á®¿Â´Ù if(request.getParameter("page") == null) { nowPage = 1; } else { nowPage = Integer.parseInt(request.getParameter("page")); if(nowPage < 1) { nowPage = 1; } } // °´Ã¼¸¦ »ý¼ºÇÑ´Ù (ÇöÀçÆäÀÌÁö, Àüü±Û¼ö, ÆäÀÌÁö´çÇ¥½ÃÇÒ ±ÛÀǼö, Çѹø¿¡ Ç¥½ÃÇÒ ÆäÀÌ¡ºí·Ï¼ö) PageNavigation pageNav = new PageNavigation(nowPage, rowTotal, 10, 5); // µð¹ö±ëÀÌ ÇÊ¿äÇҽà »ç¿ëÇÑ´Ù. ¾È½áµµ µÊ pageNav.Debug(); // ½ÃÀÛRow°ª°ú Á¾·áRow°ªÀ» ³Ö¾î Äõ¸®¹®À» ÀÛ¼ºÇÑ´Ù sql = "SELECT * FROM TableName ORDER BY no DESC LIMIT " + pageNav.getStartRow() + ", " + pageNav.getBlockSize(); // ºä¿¡°Ô ³Ñ±æ °ªÀ» ÁöÁ¤ÇÑ´Ù request.setAttribute("pageIsPrev", pageNav.isPrevPage()); // ÀÌÀüÆäÀÌÁö ºí·ÏÀÇ Á¸ÀçÀ¯¹« request.setAttribute("pageIsNext", pageNav.isNextPage()); // ´ÙÀ½ÆäÀÌÁö ºí·ÏÀÇ Á¸ÀçÀ¯¹« request.setAttribute("pageStart", pageNav.getStartPage());// ½ÃÀÛÆäÀÌÁö ¹øÈ£ request.setAttribute("pageEnd", pageNav.getEndPage()); // Á¾·áÆäÀÌÁö ¹øÈ£ --------------------------------------------------------------------------------------- jsp(View) ¼Ò½ºÄÚµå(ELÇ¥±â¹ý, JSTL»ç¿ë) : ---------------------------------------------------------------------------------------
prev [${page}] next
--------------------------------------------------------------------------------------- °á°ú : --------------------------------------------------------------------------------------- prev [11] [12] [13] [14] [15] next