Java
[Java] 게시판 페이징(Paging) 로직
dev.mk
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}
반응형