본문 바로가기
프로그래밍언어/패턴, 알고리즘, 프로토콜

STRUTS2+iBatis 계층형 게시판 만들기 (3)

by plog 2009. 12. 14.


3. 자바 파일 설명

- 주요 계층형 게시판 관련 변수
 public int boardNo=1;        // 보드 ID
 public int pageNo=1;         // 현재 페이지 번호
 public int pageSize=10;     // 한페이지에 보여주는 글 수
 public int groupSize=10;    // 게시판 하단에 나오는 [1][2][3] 의 페이지 수
 public int totCnt = 0;         // 게시물의 총 수
 public int groupNo=0;       // 현재 그룹 번호
 public int startRow=0;       // 현재 페이지 시작 번호
 public int endRow = 0;      // 현재 페이지 끝번호
 
public int startPage=0;      // 현재 그룹 시작 번호
 
public int endPage = 0;     // 현재 그룹 끝 번호
 public int totalPageCnt=0;          // 총 페이지 수
 public int totalPageGroupCnt=0; // 총 그룹 수
 public int prevGroupPage = 0;   // 이전 그룹으로 이동하는 페이지 번
 public int nextGroupPage = 0;   // 다음 그룹으로 이동하는 페이지 번 
 
// 변수들의 초기값을 셋팅하는 함수  
private void parserPage(){
   // 그룹 사이즈(groupSize)가 10이고 현재페이지(pageNo)가 1일때는 현재 그룹은 1이 된다.
   groupNo = pageNo/groupSize+(pageNo%groupSize==0?0:1);

   // 한 페이지에 출력되는 최상단 즉 첫번째 글 번호
   startRow = (pageNo-1)*pageSize+1;

   // 한 페이지에 출력되는 마지막 글 번호
   endRow = pageNo*pageSize;  
   totalPageCnt = (totCnt/pageSize)+(totCnt%pageSize==0?0:1);
   totalPageGroupCnt = totalPageCnt/groupSize +(totalPageCnt %groupSize==0?0:1);
  
   startPage = (groupNo -1)*groupSize+1;
   if (startPage<0) startPage =0;
   endPage = startPage+groupSize-1;
   if(endPage>totalPageCnt) endPage = totalPageCnt;
  
   prevGroupPage = (groupNo-2)*groupSize+1;
   if(prevGroupPage<0) prevGroupPage = 1;
   nextGroupPage = groupNo*groupSize+1;
   if(nextGroupPage>totalPageGroupCnt)nextGroupPage = totalPageCnt;
  
   for(int i=startPage;i<=endPage;i++){
     BoardPage tmp = new BoardPage();
     tmp.setPageNumber(i);
     pageSizeArray.add(tmp);
   }  
 }
 
 /*** DB와 객체간에 맵핑 작업을 한다. */
 @SuppressWarnings("unchecked")
 private boolean setMap(){
  boolean ret = false;
  try{
   if(m_reader==null ||m_sqlmap==null){ 
    String resource = "SqlMapConfigAuth.xml";
       m_reader = Resources.getResourceAsReader(resource);
       m_sqlmap = SqlMapClientBuilder.buildSqlMapClient(m_reader); 
       
       Map tmpMap = new HashMap();       
       tmpMap.put("currentpage", pageNo);
       tmpMap.put("pagesize", pageSize);
       tmpMap.put("boardnu", boardNo);
    
       if(selectValue.equalsIgnoreCase("")){
          // (2)에서 설명된 iBatis의 맵을 호출하여 리스트 정보를 얻는다.
          data = m_sqlmap.queryForList("boardMaster.selectlist",tmpMap);
       }else{
          data = m_sqlmap.queryForList("boardMaster.selectlist",tmpMap);
       }

       totCnt = (Integer)m_sqlmap.queryForObject("boardMaster.listcount",boardNo);       
       m_reader.close();
       ret=true;
   }
  }catch(Exception e){
   e.printStackTrace();
  }
  return ret; 
 }
 
  

 

댓글