* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2008.10.29

ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑ

¿Ö ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö¸¦ Á¦ÇÑÇØ¾ß Çϳª?

ÀÌÀü °­Á¿¡¼­ ¸¸µç ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©´Â ¹®Á¦°¡ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î 6000 ÆäÀÌÁö°¡ ÀÌ°í ÆäÀÌÁö´ç ·¹ÄÚµå °¹¼ö(numPerPage)°¡ 10 À̶ó¸é 600°³ÀÇ Á÷Á¢ À̵¿ ¸µÅ©¸¦ ¸¸µì´Ï´Ù.
±×·¸´Ù¸é 600°³ÀÇ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©´Â ¿¹»Û µðÀÚÀÎÀ» ÇìÁý¾î ³õÀ» °Ì´Ï´Ù.
ÀÌ¿¡ ´ëÇÑ ÇØ°áÃ¥Àº ÆäÀÌÁö¸¦ ±×·ìÈ­ ÇÏ¸é µË´Ï´Ù.
ÀÌ ±â´ÉÀ» ¿©±â¼­´Â "ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑ ±â´É" À̶ó°í ÇϰڽÀ´Ï´Ù.

ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑ ±â´É ±¸Çö

ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©ÀÇ ¼ö¸¦ Á¦ÇÑÇϱâ À§Çؼ­´Â ÆäÀÌÁö¸¦ ±×·ìÀ¸·Î ³ª´©¾î¾ß ÇÕ´Ï´Ù.
±×·ìÈ­ÀÇ ´ë»óÀº ÆäÀÌÁöÀÔ´Ï´Ù.
ÆäÀÌÁö¸¦ ±×·ìÈ­ ÇÒ ¶§ ±×·ì ¹øÈ£¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§À» block À̶ó°í ÇϰڽÀ´Ï´Ù.
"ÆäÀÌÁö ºÐÇÒ ±â´É"¿¡¼­´Â ±×·ìÈ­ ´ë»óÀº ·¹ÄÚµåÀÌ°í ±×·ì¹øÈ£¸¦ ÀúÀåÇÒ º¯¼ö´Â curPage ÀÔ´Ï´Ù.
¸¸¾à ±×·ìÀÇ Å©±â¸¦ 5·Î Á¤Çß´Ù¸é (Áï, ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö¸¦ 5°³¸¸ º¸À̵µ·Ï Á¦ÇÑÇÑ´Ù¸é )
ÆäÀÌÁö [1] [2] [3] [4] [5] ´Â ±×·ì 1 ¿¡ ÇØ´çÇϰí, block Àº 1 ÀÔ´Ï´Ù.
ÆäÀÌÁö [6] [7] [8] [9] [10] ´Â ±×·ì 2 ¿¡ ÇØ´çÇϰí, block Àº 2 ÀÔ´Ï´Ù.
ÆäÀÌÁö [11] [12] [13] [14] [15] ´Â ±×·ì 3 ¿¡ ÇØ´çÇϰí, block Àº 3 ÀÔ´Ï´Ù.
ÀÌ·± °ü°è¸¦ Àß »ìÆìº¸¸é ÇöÀç curPage °¡ ¼ÓÇÑ ±×·ì Áï, block ¸¦ ±¸ÇÒ¼ö ÀÖ½À´Ï´Ù.
ºí·Ï´ç ÆäÀÌÁö ¼ö¸¦ ´ã´Â º¯¼ö¸íÀ» pagePerBlock ¶ó°í ÇÏ¸é ¾Æ·¡ÀÇ ÄÚµå·Î curPage °¡ ¼ÓÇÑ block ¸¦ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

if ( ( curPage % pagePerBlock ) == 0 ) {
   block = curPage / pagePerBlock;
} else {
   block = curPage / pagePerBlock + 1;
}

À§ Äڵ忡¼­ block ¸¦ ±¸Çß´Ù¸é ÀÌ block ¿¡ ¼ÓÇÑ Ã¹¹øÂ° ÆäÀÌÁö¿Í ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£¸¦ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

// block ¿¡ ¼ÓÇÑ Ã¹¹øÂ° ÆäÀÌÁö °è»ê 
int firstPage = ( block - 1 ) * pagePerBlock + 1;

// block ¿¡ ¼ÓÇÑ ¸¶Áö¸· ÆäÀÌÁö °è»ê
int lastPage =  block * pagePerBlock;

·çÇÁ¹®À» ÀÌ¿ëÇØ¼­ ù¹øÂ° ÆäÀÌÁöºÎÅÍ ¸¶Áö¸· ÆäÀÌÁö±îÁö ¸µÅ©¸¦ ¸¸µì´Ï´Ù.

for ( int i = firstPage; i <= lastPage; i++ ) {
	// ÆäÀÌÁö ¸µÅ© »ý¼º
}

¾Æ·¡ Äڵ带 1Â÷ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑÀ» ±¸ÇöÇϱâ À§ÇØ ±âÁ¸ Äڵ忡 Ãß°¡ÇÕ´Ï´Ù.

list.jsp ver 1

// ºí·Ï´ç ÆäÀÌÁö ¼ö¸¦ Á¤ÇÑ´Ù.
int pagePerBlock = 5;


// ÇöÀç ÆäÀÌÁö°¡ ¼ÓÇÑ ºí·ÏÀ» °è»êÇÑ´Ù.
int block = 1;
if((curPage % pagePerBlock) == 0) {
  block = curPage / pagePerBlock;
} else {
  block = curPage / pagePerBlock + 1;
}


// ºí·Ï¿¡¼­ ¸µÅ©ÇÒ Ã¹¹øÂ° ÆäÀÌÁö¿Í ¸¶Áö¸· ÆäÀÌÁö¸¦ °è»êÇÑ´Ù. 
int firstPage = ( block - 1 ) * pagePerBlock + 1;
int lastPage = block * pagePerBlock;


// ·çÇÁ¹®À» ÀÌ¿ëÇØ¼­ ù¹øÂ° ÆäÀÌÁöºÎÅÍ ¸¶Áö¸· ÆäÀÌÁö±îÁö ¸µÅ©¸¦ ¸¸µç´Ù. 
for( int i = firstPage; i <= lastPage; i++) {
..

À§ÀÇ ÄÚµåÁ¶°¢¸¦ ±âÁ¸ÀÇ ¸®½ºÆ® ÆäÀÌÁö¿¡ Ãß°¡Çؼ­ ½ÇÇàÇØ º¾´Ï´Ù.
ÇöÀç ÆäÀÌÁö°¡ ¼ÓÇÑ block À» ±¸Çؼ­ ±× block ¿¡¼­ ¸µÅ©ÇÒ Ã¹¹øÂ° ÆäÀÌÁö¿Í ¸¶Áö¸· ÆäÀÌÁö¸¦ ±¸Çؼ­ ¸µÅ©ÇÏ´Â µ¥´Â ¼º°øÇß½À´Ï´Ù. ÇÏÁö¸¸ ´Ù¸¥ ±×·ìÀ¸·Î, Áï ´Ù¸¥ block À¸·Î À̵¿ÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖÁö¸¸ ÇöÀç °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ¹æ¹ýÀº ÇöÀç block ÀÌ 1 º¸´Ù Å©´Ù¸é [ÀÌÀü] ¸µÅ©¸¦ ¸¸µé¾î¼­ firstPage - 1 ÀÎ ÆäÀÌÁö ¹øÈ£·Î ¸µÅ©½Ã۰í, block ÀÌ ÃÑ ºí·Ï¼öº¸´Ù ÀÛ´Ù¸é [´ÙÀ½] ¸µÅ©¸¦ ¸¸µé°í lastPage + 1 ÀÎ ÆäÀÌÁö ¹øÈ£·Î ¸µÅ©½Ã۸é ÀÎÁ¢ÇÑ block À¸·Î [ÀÌÀü] [´ÙÀ½] ¸µÅ©¸¦ ÀÌ¿ëÇØ¼­ À̵¿ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ÃÑ ºí·Ï¼ö¸¦ ±¸ÇØ¾ß Çϴµ¥ ÃÑ ºí·Ï¼ö¸¦ ÀúÀåÇÒ º¯¼ö¸íÀ» totalBlock ¶ó°í ÇÏ¸é ¾Æ·¡ ÄÚµå·Î ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

int totalBlock = 0;

if ( totalPage > 0 ) { 
  if ( ( total_page % pagePerBlock ) == 0 ) {
    totalBlock = totalPage / pagePerBlock;
  } else {
    totalBlock = totalPage / pagePerBlock + 1;
  }
}

À§ ¼³¸íÀ» Åä´ë·Î Áö±Ý±îÁöÀÇ Äڵ忡 ¾Æ·¡ ÄÚµåÁ¶°¢(±½ÀºÃ¼)À» Ãß°¡ÇÕ´Ï´Ù.
[ÀÌÀü] [´ÙÀ½] ¸µÅ©¿¡ °üÇÑ ÄÚµåÀ̹ǷΠfor ¹® À§ ¾Æ·¡·Î Ãß°¡ÇÕ´Ï´Ù.

list.jsp ver 2

// ÃÑ ºí·Ï¼ö¸¦ °è»êÇÑ´Ù.

int totalBlock = 0;
if ( totalPage > 0 ) { 
  if ( ( totalPage % pagePerBlock ) == 0 ) {
     totalBlock = totalPage / pagePerBlock;
  } else {
     totalBlock = totalPage / pagePerBlock + 1;
  }
}  

// ÇöÀç block > 1 ¸é [ÀÌÀü]¸µÅ©¸¦ ¸¸µé°í firstPage - 1 ÆäÀÌÁö·Î ¸µÅ©

int prevPage = 0;
if(block > 1) {
  prevPage = firstPage -1;
..
 <a href="list.jsp?curPage=<%=prevPage%>">[ÀÌÀü]</a>
..
}
..


// ·çÇÁ¹®À» ÀÌ¿ëÇØ¼­ ù¹øÂ° ÆäÀÌÁöºÎÅÍ ¸¶Áö¸· ÆäÀÌÁö±îÁö ¸µÅ©¸¦ ¸¸µç´Ù. 
for( int i = firstPage+1; i <= lastPage; i++) {
..
// block < totalBlock ¸é [´ÙÀ½]¸µÅ©¸¦ ¸¸µé°í  lastPage + 1 ¸¦ ÆäÀÌÁö¹øÈ£·Î ¸µÅ© 

if(block < totalBlock) {
  int nextPage = lastPage + 1;
..
  <a href="list.jsp?curPage=<%=nextPage%>">[´ÙÀ½]</a>
..
}
..

ÃÑ ÆäÀÌÁö°¡ 20ÀÏ ¶§ pagePerBlock °¡ 7 À̶ó¸é ÃÑ ºí·Ï¼ö°¡ 3 À¸·Î °è»êµÇ¸é¼­ ¸¶Áö¸· ºí·Ï¿¡¼­ ºÒÇÊ¿äÇÑ ÆäÀÌÁö 21ÀÌ »ý±é´Ï´Ù.
ÃÑ 20ÆäÀÌÁö¸¦ pagePerBlock·Î ³ª´« °á°ú totalBlock °¡ 3ÀÌ µÇ¸é¼­ block ÀÌ 3¿¡¼­ 15 ~ 21 ÆäÀÌÁö¸¦ ¸¸µé±â ¶§¹®ÀÔ´Ï´Ù.
ÀÌ·± ºÒÇÊ¿ëÇÑ ÆäÀÌÁö ¹øÈ£°¡ »ý¼ºµÇ´Â °ÍÀ» ¸·±â À§Çؼ­ ¾Æ·¡ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
ÃÑ ÆäÀÌÁö¼ö´Â ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£À̱⵵ ÇÕ´Ï´Ù.

list.jsp ver 3

if ( block >= totalBlock ) {
  lastPage = totalPage;
}

´ÙÀ½Àº Á¾ÇÕÀûÀÎ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑ ¾Ë°í¸®ÁòÀ» Á¤¸®Çß½À´Ï´Ù.

ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö Á¦ÇÑ ¾Ë°í¸®Áò

1. ºí·Ï´ç ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¼ö¸¦ Á¤ÇÑ´Ù.
2. ÃÑ ºí·Ï¼ö(totalBlock)¸¦ °è»êÇÏ´Ù.
3. ÇöÀç ÆäÀÌÁö°¡ ¼ÓÇÑ ºí·ÏÀ» °è»êÇÑ´Ù.
4. ºí·Ï¿¡¼­ ¸µÅ©ÇÒ Ã¹¹øÂ° ÆäÀÌÁö¿Í ¸¶Áö¸· ÆäÀÌÁö¸¦ °è»êÇÑ´Ù.
5. ÇöÀç block >= totalBlock ¶ó¸é lastPage ´Â totalPage °ªÀ» ´ëÀÔÇÑ´Ù.
6. ÇöÀç block > 1 ¸é [ÀÌÀü]¸µÅ©¸¦ ¸¸µé°í firstPage - 1 ÆäÀÌÁö¹øÈ£·Î ¸µÅ©¸¦ ¸¸µç´Ù.
7. ·çÇÁ¹®À» ÀÌ¿ëÇØ¼­ ù¹øÂ° ÆäÀÌÁöºÎÅÍ ¸¶Áö¸· ÆäÀÌÁö±îÁö ¸µÅ©¸¦ ¸¸µç´Ù.
8. ÇöÀç block < total_blcok ¸é [´ÙÀ½]¸µÅ©¸¦ ¸¸µé°í lastPage + 1 ÆäÀÌÁö¹øÈ£·Î ¸µÅ©¸¦ ¸¸µç´Ù.