-- Index --
1번 ~ 6번 | 7번~8번 | 9번 | 10번 |
페이징에 필요한 데이터 값 구하기 |
pageVo로 뭉치고, 조건맞게 조회해오기 |
pageVo활용해서 화면보여주기 |
버튼 만들기 |
페이징 처리
- ( 컨트롤러에서 처리한다. )
필요 data 체크 및 세팅
- 시작 페이지 / 끝나는 페이지 / 게시글 수 등을 알아야 페이징 처리 가능하다.
- listCount , currentPage, pageLimit, boardLimit
- maxPage, startPage, endPage
1. listCount : [ 현재 게시글 총 개수 ] 구하기
1-1 DB 가서 알아와야 한다. - ( SELECT 작업 )
1-2 dao 작업 - SELECT COUNT()
- SELECT작업이지만 COUNT( ) 함수 사용으로 결과값이 하나만 나오고 그 값 int로 가져다 사용
count 얻어와서 listCount 에 대입해주기!
2. currentPage : [ 현재 페이지 ] 값 구하기
- 현재 페이지는 - 사용자에게 입력받아온 값 ( 클릭 이벤트로 넘어온 값 ) 으로 채워주기
3. pageLimit 과 boardLimit : [ 하단 버튼 개수, 페이지 게시글 개수 ]
- [ 페이지 하단에 보여줄 버튼 개수, 페이지에 보여줄 게시글 개수 ]
- 디자인 - 프로젝트 로직에 맞게 임의로 지정
4. maxPage : [ 가장 마지막 페이지 = 총페이지 수 ] 구하기
- listCount 와 boardLimit 값을 가지고 연산하여 구한다.
더블로 형변환해서 – 소수점 나오도록해주고 – 올림처리 해서 – 마지막 int 값으로 얻어오기
5. starting page : [ 페이징바의 시작 ] 구하기
- 내가 3페이지 보고있으면 1~10페이지
- 내가 13페이지 보고있으면 11~10페이지
- 1이랑 11이 스타팅페이지
starting page 계산 공식 ::::: n * pageLimit + 1
n의 값 구하기
n값 구하는 식으로 최종 식 완성
스타트페이지는 1 / 11 / 21 / 31/ 41 / 51 이 애들이다~
페이지limit 단위 넘어가면 스타트 페이지 바뀐다.
1에서 11로
11에서 21로
n * pageLimit +1
6. endPage : [ 페이징 바의 끝 ] 구하기
- startPage, pageLimit , maxPage로 구하기
페이징 처리에 필요한 데이터 구하기 끝!
페이징 처리 시작해보기
7. 객체로 뭉치기 위해서 - PageVo 만들어주기
- 사용할 data(변수)가 많다. - 객체로 뭉쳐서 관리하기
8. pageVo 가지고 글 조회해오기
- 몇 번 게시글 보여주어야 하는지 알아야 하니까 서비스 레이어에게 pageVo 담아서 전달.
- 결과는 BoardVo 나올 것인데 게시글이 한 개만 올게 아니니까 list로 가져오기
- 어레이 리스트보다 List로 받아주는 것이 좋다 – 왜? 더 넓은 범위의 유연한 걸로 사용.
- 서비스 레이어 결과가 어레이 리스트 말고 – 링크드 리스트로 바꿨다 해도 여기서는 변경 필요 없다.
8-1 sql 문 체크
1번 쿼리문
- 게시판 글 모두 가져오도록 select 쿼리 작성
2번 쿼리문
- 결과 15개 잘 나오는데
- 우리는 사용자의 요청에 따라 SELECT 하는 부분이 다르다.
- 어캐해야하까? - ROWNUM 이용해서 해보기
- ROWNUM을 SELECT에 써주면 ORDERBY보다 먼저 실행되므로 결과가 이상하게 나올 수 있다.
- 서브 쿼리를 이용해서 처리해주기
3번 쿼리문
- ROWNUM까지 됐으면 – 1~10번까지 조회하면 된다.
- 그런데.. 11~20번까지는 조회 안된다. - 완성되지 않은 테이블에 WHERE 조건 바로 실행하면 – 첫 번째 조건부터 실패라서 11부터 어떤 것이 오더라도 조회 안된다.
- 완성된 테이블로 취급되어서 WHERE조건 처리되도록 한 번 더 서브 쿼리로 해주기
## BETWEEN 11 AND 20에서 11이랑 20만 "?"로 바꿔서 java로 가져가자
8-2 BETWEEN ? AND ? : 물음표에 채워줄 값 구하기
- 처음 게시글 번호와 마지막 게시글 번호를 구해야 한다.
start = ( currentPage - 1 ) * boardLimit + 1
end = start + boardLimit - 1
우리가 구하는 start랑 end 는
여기 넣어줄 애들 – StartPage()랑 다른 애다..
9. 포워딩 후 페이징 작업해주기
9-1 컨트롤러 가서 화면 보여주기 작업
9-2 화면 쪽에서 받은 객체( pv ) 활용해서 페이징 처리해주기
9-3 현재 페이지를 다시 요청 시에는 새로고침 안되도록해주자.
10. 페이징 버튼 작업하기
10-1 페이징 다음 버튼 만들어주기
10-2 버튼 보이게 안 보이게 해 주기
- 맨 처음 페이지에서는 이전 버튼 안 보이도록 / 맨 마지막 페이지에서는 다음 버튼 안보이도록
페이징 처리 완료!!
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 8월' 카테고리의 다른 글
22.08.15 - 광복절 휴강, 주말 개인과제 제출, 세미프로젝트 작업 (0) | 2022.08.31 |
---|---|
22.08.12 - [ WAS ] 파일 입력받기 (0) | 2022.08.31 |
22.08.10 - [ WAS ] 상세게시글 ( 목록이동 / 삭제하기 / 수정하기 ) (0) | 2022.08.30 |
22.08.09 - [ WAS ] 게시글 상세보기 페이지 작업 ( feat. 조회 수 증가 ) (0) | 2022.08.30 |
22.08.08 - [ WAS ] 총 복습 및 세미프로젝트 진행 (0) | 2022.08.30 |