Last Modified : 2008.07.01
ÆäÀÌÁö ºÐÇÒ ±â´ÉÀ» ´ã´çÇÒ Pager Ŭ·¡½º
Pager Ŭ·¡½º´Â °Ô½ÃÆÇ¿¡¼ ÆäÀÌÁö ºÐÇÒ ±â´É¸¸À» ´ã´çÇϵµ·Ï ±¸Çö
Pager Ŭ·¡½º¿¡¼ ÇÒ ÀÏ
- list.jsp ¿¡¼ º¸ÀÏ ·¹Äڵ带 fetch ÇÏ´Â Äõ¸®¸¦ À§ÇÑ Ã¹¹øÂ° ·¹ÄÚµå¹øÁö(startRecord)¿Í ¸¶Áö¸· ·¹ÄÚµå¹øÁö(endRecord)¸¦ ¹Ýȯ
- ÇÏ´ÜÀÇ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¸¦ ¸¸µé´Â for ¹®¿¡¼ ¾²ÀÏ Ã¹¹øÂ° ÆäÀÌÁö¹øÈ£(firstPage)¿Í ¸¶Áö¸· ÆäÀÌÁö¹øÈ£(lastPage)¸¦ ¹Ýȯ
- ÀÌÀü ¸µÅ©¸¦ ¸¸µé±â À§Çؼ ÀÌÀü¸µÅ©¿¡ ¾²ÀÏ ÆäÀÌÁö ¹øÈ£(prev) ¹Ýȯ
- ´ÙÀ½ ¸µÅ©¸¦ ¸¸µé±â À§Çؼ ´ÙÀ½¸µÅ©¿¡ ¾²ÀÏ ÆäÀÌÁö ¹øÈ£(next) ¹Ýȯ
Pager °´Ã¼´Â GulManager °´Ã¼°¡ Á¦¾îÅä·Ï ±¸Çö
=> GulManager °´Ã¼°¡ »ý¼ºµÈ ´ÙÀ½ GulManage °´Ã¼¿¡¼ Pager °´Ã¼ »ý¼º
Pager °´Ã¼´Â ÇöÀç ÆäÀÌÁö ¹øÈ£(cur_page) ¿Í ÃÑ ·¹ÄÚµå ¼ö(total_record)¸¦ ÁÖ¸é ÀÚ½ÅÀÇ ¸â¹ö¸¦ ÃʱâÈ ÇÒ ¼ö ÀÖÀ½.
Pager ´Â B.O (Business Object) ¿¡ ÇØ´ç.
GulDAO ¿¡ Á¸ÀçÇß´ø ÆäÀÌÁö ºÐÇÒ ±â´É¿¡ °ü·ÃµÈ ÄÚµå´Â ¸ðµÎ Pager ·Î À̵¿
Pager.java
package com.dadam.board;
/**
*
* @since 2008.07.01
* @author ±èÁ¾ÈÆ
* @version 1.0
* @see
*/
public class Pager {
private int numPerPage = 10; // ÆäÀÌÁö´ç º¸ÀÏ ·¹ÄÚµå ¼ö(ÀÌ º¯¼ö´Â Äí۰¡ ¼¼¼Ç¿¡ ´ãÀ» ¼öµµ ÀÖÀ½)
private int pagePerBlock = 10; // ÆäÀÌÁö ÇÏ´ÜÀÇ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ© ¼ö
private int startRecord; // ·¹ÄÚµå fetch ÇÏ´Â Äõ¸®¿¡¼ »ç¿ëÇÒ Ã¹¹øÂ° ·¹ÄÚµå ¹øÁö
private int endRecord; // ·¹ÄÚµå fetch ÇÏ´Â Äõ¸®¿¡¼ »ç¿ëÇÒ ¸¶Áö¸· ·¹ÄÚµå ¹øÁö
private int block; // ÆäÀÌÁö ¸µÅ© ±×·ì ¹øÈ£¸¦ ´ã´Â º¯¼ö
private int totalBlock; // ÃÑ ºí·Ï
private int totalPage; // ÃÑ ÆäÀÌÁö ¼ö
private int firstPage; // ù¹øÂ° ÆäÀÌÁö ¹øÈ£
private int lastPage; // ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£
private int prev; // ÀÌÀü ºí·ÏÀ¸·Î À̵¿Çϱâ À§ÇÑ ÀÌÀüºí·ÏÀÇ ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£
private int next; // ´ÙÀ½ ºí·ÏÀ¸·Î À̵¿Çϱâ À§ÇÑ ´ÙÀ½ºí·ÏÀÇ Ã¹¹øÂ° ÆäÀÌÁö ¹øÈ£
private int articleNo; // °Ô½Ã±Û¿¡ ºÙ¿©ÁÙ ¹øÈ£(P.K·Î ¹øÈ£¸¦ ºÙÀ̸é À̰¡ ºüÁö¹Ç·Î)
public Pager ( int page, int totalRecord ) {
startRecord = ( page - 1 ) * numPerPage + 1;
endRecord = startRecord + numPerPage - 1;
if ( page % pagePerBlock == 0 ) {
block = page / pagePerBlock;
} else {
block = page / pagePerBlock + 1;
}
if ( totalRecord % numPerPage == 0 ) {
totalPage = totalRecord / numPerPage;
} else {
totalPage = totalRecord / numPerPage + 1;
}
if ( totalPage % pagePerBlock == 0 ) {
totalBlock = totalPage / pagePerBlock;
} else {
totalBlock = totalPage / pagePerBlock + 1;
}
firstPage = ( block - 1 ) * pagePerBlock + 1;
lastPage = block * pagePerBlock;
if ( block >= totalBlock ) lastPage = totalPage;
if ( block > 1 ) prev = firstPage - 1;
if ( block < totalBlock ) next = lastPage + 1;
articleNo = totalRecord - ( page - 1 ) * numPerPage;
}
public int getStartRecord () {
return startRecord;
}
public int getEndRecord () {
return endRecord;
}
public int getFirstPage () {
return firstPage;
}
public int getLastPage () {
return lastPage;
}
public int getPrev () {
return prev;
}
public int getNext () {
return next;
}
public int getArticleNo () {
return articleNo;
}
}
GulManager ¿Í GulDAO ¸¦ ¼öÁ¤
GulManager.java
.. Áß°£ »ý·« ..
public class GulManager {
.. Áß°£ »ý·« ..
private Pager pager; // Pager ·¹ÆÛ·±½º¸¦ ¸â¹ö·Î
//init ¿¡¼ Pager °´Ã¼¸¦ »ý¼ºÇϴµ¥ ÆÄ¶ó¹ÌÅÍ·Î ÇöÀçÆäÀÌÁö¿Í ÃÑ ·¹ÄÚµå¼ö¸¦ ÁØ´Ù.
public void init(int page,int totalRecord) {
pager = new Pager(page,totalRecord);
}
// findGulList ¸Þ¼Òµå ¼öÁ¤, ¸Þ¼Òµå ³»¿¡ ÆäÀÌÁö ºÐÇÒ ±â´É°ú °ü·ÃµÈ ÄÚµå ÃßÃâ
public ArrayList findGulList( int start, int end, String bcode ) {
return gulDAO.findGulList( start, end, bcode);
}
// ¾Æ·¡´Â Ãß°¡µÇ´Â ¸Þ¼Òµå, GulManager°¡ °Ô½ÃÆÇ¿¡ °ü·ÃµÈ ¸ðµç ¼ºñ½º¸¦ °¡Áö°í ÀÖ¾î¾ß ÇϹǷÎ
public int getStartRecord () {
return pager.getStartRecord();
}
public int getEndRecord () {
return pager.getEndRecord();
}
public int getPrev() {
return pager.getPrev();
}
public int getNext() {
return pager.getNext();
}
public int getFirstPage () {
return pager.getFirstPage();
}
public int getLastPage () {
return pager.getLastPage();
}
public int getArticleNo () {
return pager.getArticleNo();
}
}
GulDAO.java
.. Áß°£ »ý·« ..
// findGulList ¸Þ¼Òµå ¼öÁ¤
public ArrayList findGulList ( int start, int end, String bcode ) {
Log log = new Log();
ArrayList gulList = new ArrayList();
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT gulno,subject,to_char(signdate,'YYYY/MM/DD') signdate,ref FROM " +
"(" +
"SELECT ROWNUM R, A.* FROM (select gulno, subject,signdate, ref" +
" FROM gul where bcode = ? ORDER BY gulno DESC) A" +
") " +
"WHERE R BETWEEN ? and ?";
.. Áß°£ »ý·« ..
ListAction.java
.. Áß°£ »ý·« ..
// Parameter
int cur_page = (request.getParameter("cur_page") == null) ? 1 :
Integer.parseInt(request.getParameter("cur_page"));
String board = request.getParameter("board");
if ( board == null ) {
board = "notice";
}
GulManager gulManager = new GulManager();
int total_record = gulManager.getTotalRecord(board);
gulManager.init(cur_page, total_record);
int start = gulManager.getStartRecord();
int end = gulManager.getEndRecord();
ArrayList gulList = gulManager.findGulList( start, end, board );
int prev = gulManager.getPrev();
int next = gulManager.getNext();
int first_page = gulManager.getFirstPage();
int last_page = gulManager.getLastPage();
int article_no = gulManager.getArticleNo();
request.setAttribute("gulList", gulList);
request.setAttribute("board", board);
request.setAttribute("prev", new Integer(prev));
request.setAttribute("next", new Integer(next));
request.setAttribute("cur_page", new Integer(cur_page));
request.setAttribute("first_page", new Integer(first_page));
request.setAttribute("last_page", new Integer(last_page));
request.setAttribute("article_no", new Integer(article_no));
.. Áß°£ »ý·« ..
list.jsp
.. Áß°£ »ý·« ..
<%
ArrayList gulList = (ArrayList)request.getAttribute("gulList");
String board = (String)request.getAttribute("board");
int prev = ((Integer)request.getAttribute("prev")).intValue();
int next = ((Integer)request.getAttribute("next")).intValue();
int cur_page = ((Integer)request.getAttribute("cur_page")).intValue();
int first_page = ((Integer)request.getAttribute("first_page")).intValue();
int last_page = ((Integer)request.getAttribute("last_page")).intValue();
int article_no = ((Integer)request.getAttribute("article_no")).intValue();
%>
.. Áß°£ »ý·« ..
<%
if ( prev != 0 ) {
%>
<a href="javascript:goList('<%=prev %>')">[ÀÌÀü]</a>
<%
}
for ( int i = first_page; i <= last_page; i++ ) {
%>
<a href="javascript:goList('<%=i%>')">[<%=i%>]</a>
<%
}
if ( next != 0 ) {
%>
<a href="javascript:goList('<%=next %>')">[´ÙÀ½]</a>
<%
}
%>
.. Áß°£ »ý·« ..
°úÁ¦
- Pager Ŭ·¡½º¸¦ ÀÌ¿ëÇϵµ·Ï model 1 °Ô½ÃÆÇ ¼öÁ¤
- list.jsp ¿¡¼ ¾Æ·¡ Äڵ尡 º¸ÀÌÁö ¾Êµµ·Ï pager.jsp ¶õ ÆäÀÌÁö¸¦ ¸¸µé°í include Áö½Ã¾î ¶Ç´Â jsp:include ¾×¼Ç »ç¿ëÇÏ¿© ¼öÁ¤
<% if ( prev != 0 ) { %> <a href="javascript:goList('<%=prev %>')">[ÀÌÀü]</a> <% } for ( int i = first_page; i <= last_page; i++ ) { %> <a href="javascript:goList('<%=i%>')">[<%=i%>]</a> <% } if ( next != 0 ) { %> <a href="javascript:goList('<%=next %>')">[´ÙÀ½]</a> <% } %>
