ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 게시판 페이징(Paging) 로직
    Java 2017. 12. 12. 14:42
    반응형

    페이징로직 쉽지 않다~


    이론적으로 분석하는 것 보다 

    직접 실행하면서 중간중간 변수에 println 찍으면서 보면 이해의 도움이 된다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
        public static void main(String[] args) {
            
            /* Method로 작성시 받아야하는 Parameter 4가지 */
            String listUrl = "bbsList.do"//게시판 리스트 url
            Integer total = 151//게시판글 총 카운트 수
            Integer page = 1// 현재 페이지
            Integer row = 10// 보여질 행의 수 (기본 10줄)
            
            //return할 페이징 태그
            String pagingNavi = "";
            
            int pages = (total == 0) ? 1 : (int) ((total - 1/ row) + 1// * 정수형이기때문에 소숫점은 표시안됨
            int blocks;
            int block;
            int firstPage;
            int lastPage;
            blocks = (int) Math.ceil(1.0 * pages / 10.0); // *소숫점 반올림
            block = (int) Math.ceil(1.0 * page / 10.0); // *소숫점 반올림
            
            firstPage = (block - 1* 10 + 1;
            lastPage = block * 10;
            
            
            if (lastPage > pages){
                lastPage = pages;
            }
            
            //<START>
            pagingNavi = "[처음목록으로]"// listUrl+"&page = 1" 고정
            
            if(block > 1){
                pagingNavi += "[이전목록으로]"//listUrl+"&page="+(firstPage-1)
            }
                
            for(int i=firstPage; i <= lastPage; i++){
                if(page == i) { // * 현재 페이지 이자 내가 클릭한 페이지일때
                    pagingNavi += "[_"+page+"_]"//listUrl+"&page="+page
                }else{
                    pagingNavi += "["+i+"]"//listUrl+"&page="+i
                }
            }
                
            //blocks가 block 보다 크면  ++ 아래 태그를 생성함 
            if(block < blocks){
                pagingNavi += "[다음목록으로]"//listUrl+"&page="+(lastPage+1)
            }
        
            //<END>
            pagingNavi += "[마지막목록으로]"//listUrl+"&page="+pages
            
            System.out.println(" pagingNavi : "+pagingNavi);
            
        }
    cs

    출력결과  

    pagingNavi : [처음목록으로][_1_][2][3][4][5][6][7][8][9][10][다음목록으로][마지막목록으로]


    1. 실제로 사용할 땐 a태그 형태로 그려야 한다.  "<a href="+listUrl+&page=">

    2. pagingNavi을 리턴하는 String형 method로 만든 뒤 컨트롤러 model 담고 view단(.jsp)에 쓰면된다.

    ex) 담을곳.("pagingNavi"test.getPaging(int형 total, int형page , int형row, String형 listUrl) ); ==> ${pagingNavi}



    반응형

    댓글

Designed by Tistory.