게시판 목록 만들기와 페이징
1. 게시물 목록 페이징
: boardList.jsp로 띄우기 전에 우리가 원하는대로 페이징이 됐는지 TDD로 테스트 함
2. LIMIT[offset,] row_count
: 테이블에 들어있는 데이터를 페이지별로 가져오려면 select문의 LIMIT을 사용해야 함
: 리스트 맨 처음부터 얼마나 떨어져 있는가 - offset
: 읽어올 row 의 수 - row_count
public PageHandler(int totalCnt, int page, int pageSize){
this.totalCnt = totalCnt;
this.page=page;
this.pageSize=pageSize;
totalPage = (int) Math.ceil(totalCnt/(double) pageSize); // 페이지가 부족할경우 +1 해야해서 올림으로 처리
beginPage = page/naviSize * naviSize +1;
endPage = Math.min(beginPage + naviSize -1, totalPage); // 한 페이지를 다 채우지 못한 경우 네비와 토탈 중 작은 값을 마지막 페이지로 씀. 삼항연산자도 가능
showPrev = beginPage !=1; // 1일땐 prev가 나올 이유가 없으므로 false로 설정함
showNext = endPage != totalPage;
}
void print(){ // 페이지 네비게이션을 프린트하는 메서드
System.out.println("page=" + page);
System.out.print(showPrev ? "[PREV] " : "");
for(int i=beginPage; i<=endPage;i++){
System.out.print(i+" ");
}
System.out.println(showNext ? " [NEXT]" : "");
}
이 파트를 하면서 자바 공부할때 풀었던 여러가지 문제들이 다 이런걸 위한 빌드업이었구나...라는 생각이 들었다. (물론 이것도 기초중의 생기초지만)
이걸 어떻게 실제로 써먹지??했던게 이렇게...!
@Test
public void test(){
PageHandler ph = new PageHandler(250,1); // 페이지가 25개 나와야 함
ph.print();
System.out.println("ph=" + ph);
assertTrue(ph.beginPage==1);
assertTrue(ph.endPage==10);
}
@Test
public void test3(){
PageHandler ph = new PageHandler(255,25); // 페이지가 26개 나와야 함
ph.print();
System.out.println("ph=" + ph);
assertTrue(ph.beginPage==21);
assertTrue(ph.endPage==26);
}
👉 처음과 끝부분에 대한 테스트.
👉 +1로 26페이지를 생성시 totalPage가 int끼리 나누면 올림을 해도 그대로이므로, 형변환 활용. (int)(255/(double)10)
👉 prev/next 메뉴가 잘 뜨는지 확인 필요.
'🔥 Vamos > Spring' 카테고리의 다른 글
0525 | Maven (2) // pom.xml업데이트, maven 라이브러리 설정 (0) | 2023.05.25 |
---|---|
0524 | Maven (1) // 메이븐 개념, build lifecycle (0) | 2023.05.24 |
0219 | 스프링의 정석 :: 4-2 (DTO) (1) | 2023.02.19 |
0218 | 스프링의 정석 :: 4-1 (MyBatis) (0) | 2023.02.18 |
0215 | 스프링의 정석 :: 3-21 (propagation속성/ required / required_new) (0) | 2023.02.15 |