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

ÆäÀÌÁö ºÐÇÒ ±â´ÉÀ» ´ã´çÇÒ Pager Ŭ·¡½º

Pager Ŭ·¡½º´Â °Ô½ÃÆÇ¿¡¼­ ÆäÀÌÁö ºÐÇÒ ±â´É¸¸À» ´ã´çÇϵµ·Ï ±¸Çö

Pager Ŭ·¡½º¿¡¼­ ÇÒ ÀÏ

  1. list.jsp ¿¡¼­ º¸ÀÏ ·¹Äڵ带 fetch ÇÏ´Â Äõ¸®¸¦ À§ÇÑ Ã¹¹øÂ° ·¹ÄÚµå¹øÁö(startRecord)¿Í ¸¶Áö¸· ·¹ÄÚµå¹øÁö(endRecord)¸¦ ¹Ýȯ
  2. ÇÏ´ÜÀÇ ÆäÀÌÁö Á÷Á¢ À̵¿ ¸µÅ©¸¦ ¸¸µé´Â for ¹®¿¡¼­ ¾²ÀÏ Ã¹¹øÂ° ÆäÀÌÁö¹øÈ£(firstPage)¿Í ¸¶Áö¸· ÆäÀÌÁö¹øÈ£(lastPage)¸¦ ¹Ýȯ
  3. ÀÌÀü ¸µÅ©¸¦ ¸¸µé±â À§Çؼ­ ÀÌÀü¸µÅ©¿¡ ¾²ÀÏ ÆäÀÌÁö ¹øÈ£(prev) ¹Ýȯ
  4. ´ÙÀ½ ¸µÅ©¸¦ ¸¸µé±â À§Çؼ­ ´ÙÀ½¸µÅ©¿¡ ¾²ÀÏ ÆäÀÌÁö ¹øÈ£(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>
<%
  }
%>

.. Áß°£ »ý·« ..	

°úÁ¦

  1. Pager Ŭ·¡½º¸¦ ÀÌ¿ëÇϵµ·Ï model 1 °Ô½ÃÆÇ ¼öÁ¤
  2. 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>
    <%
      }
    %>