-
[Java] 게시판 페이징(Paging) 로직Java 2017. 12. 12. 14:42반응형
페이징로직 쉽지 않다~
이론적으로 분석하는 것 보다
직접 실행하면서 중간중간 변수에 println 찍으면서 보면 이해의 도움이 된다.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253public static void main(String[] args) {/* Method로 작성시 받아야하는 Parameter 4가지 */String listUrl = "bbsList.do"; //게시판 리스트 urlInteger 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="+pagesSystem.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}
반응형'Java' 카테고리의 다른 글
Java 람다식(Lambda Expressions) 이란? (0) 2020.04.18 [Java] 기초 - Java 제어자(modifier), 접근 제어자(access modifier) (0) 2017.12.12 [toArray] 자바 List 리스트값 String[] 배열안에 넣기 (0) 2017.08.22 자바(java) 정규식이용 초간단 문자열 변경,치환 replaceAll (아스타처리, 마스킹처리) (1) 2017.04.29 자바 문자열 클래스(indexOf, split, toString, subString, contains) (0) 2016.05.07