-
[ JSP ] 도서 검색(페이징 처리), 도서 상세정보(리뷰 조회)PROGRAMMING/HTML, CSS 2022. 6. 2. 22:05
하루입니다.
무엇을 만들어야 하는가1. 페이징처리하기
2. 카트에 아이템 담기
3. 리뷰 조회하기
Book vo 만든다
BookDao 만들어서 책번호, 제목, 작가, 출판사, 가격, 할인가격 조회하는 메소드( ), 전체 행 갯수(= 책갯수) 반환하는 메소드( ), 한 페이지에 특정 갯수의 책만 나오게 하는(페이지 관련) 메소드 ( ) 만든다.ROW_NUMBER() OVER ( [PARTITION BY 컬럼명] ORDER BY 컬럼명 ASC|DESC )
ROW_NUMBER 사용함.
이 분석함수는 지정된 정렬기준으로 데이터를 정렬한 다음에 1번부터 시작하는 순번을 차례대로 붙인다.
[PARTITION BY 컬럼명은 컬럼값이 같은 것끼리 1번부터 시작하는 순번을 붙이는 것이다. 생략 가능하다.
이런 결과가 나온다.
위의 식을 가상의 테이블로 활용한다.
나중에 숫자 자리에는 값이 들어갈 것
페이징 처리하기0. 클라이언트가 요청한 페이지 번호 조회하기 (뒤 숫자는 예시)
- 클라이언트가 요청한 페이지번호 조회하기
- 페이지번호가 올바르지 않으면 1페이지를 재요청하는 URL을 응답으로 보낸다.
1. 페이징처리에 필요한 기본값 정하기
- 한 화면에 출력할 행의 갯수 : 5
- 한 화면에 출력할 페이지번호 갯수 : 5
2. 요청한 페이지번호에 맞는 페이지번호 계산하기- 전체 데이터 갯수 조회하기 : 32
int records = itemDao.getTotalRowsCount(); - 총 페이지 갯수 계산하기 : 7
int totalPages = (int) (Math.ceil((double) records/rows)); - 총 페이지블록 갯수 계산하기 : 2
int totalBlocks = (int) (Math.ceil((double) totalPages/pages)); - 클라이언트가 요청한 페이지번호가 몇 번째 페이지블록인지 계산하기
int currentBlock = (int) (Math.ceil((double) currentPage/pages)); - 클라이언트가 요청한 페이지번호에 맞는 페이지번호 구간 계산하기
int beginPage = (currentBlock - 1)* pages + 1;
int endPage = (currentBlock == totalBlocks ? totalPages : currentBlock*pages);
3. 요청한 페이지번호에 맞는 데이터 조회하기
- 클라이언트가 요청한 페이지번호에 맞는 데이터 조회 범위 계산하기
int beginIndex = (currentPage - 1)*rows + 1;
int endIndex = currentPage*rows; - 데이터 조회 범위에 맞는 데이터 조회하기
List<Item> items = itemDao.getItems(beginIndex, endIndex);
4. 조회된 데이터 출력하기<% for (Item item : items) { %> <tr> <td><%=item.getNo() %></td> <td><a href="detail.jsp?no=<%=item.getNo() %>"><%=item.getName() %></a></td> <td>...</td> </tr> <% } %>
5. 페이지번호 출력하기<ul class="pagination justify-content-center"> <li class="page-item"> // '이전' 버튼은 현재 페이지가 1과 같거나 작다면 비활성화된다. <a class="page-link <%=currentPage <= 1 ? "disabled" : "" %>" href="list.jsp?page=<%=currentPage - 1 %>">이전</a> </li> <% for (int num = beginPage; num <= endPage; num++) { %> // for문을 돌렸을 때, 현재 페이지와 num이 같다면 활성화된다. <li class="page-item <%=currentPage == num ? "active" : "" %>"> <a class="page-link" href="list.jsp?page=<%=num %>"><%=num %></a> </li> <% } %> <li class="page-item"> // '다음' 버튼은 현재 페이지가 토탈페이지와 같거나 높다면 비활성화된다. <a class="page-link <%=currentPage >= totalPages ? "disabled" : "" %>" href="list.jsp?page=<%=currentPage + 1 %>">다음</a> </li> </ul>
잘못된 정보에 대한 지적은 언제나 환영입니다.
복습 끝!'PROGRAMMING > HTML, CSS' 카테고리의 다른 글
[ CSS ] CSS 선택자 사용할 때 주의사항과 팁 (0) 2022.05.17 [ CSS ] 정말 정말 중요한 CSS 선택자 (0) 2022.05.17 [ CSS ] float, clear (0) 2022.05.16 세상에서 가장 허접한 작은 홈페이지 만들기 (0) 2022.05.16 [ CSS ] CSS 우선순위, color, text style, 박스모델, 위치지정방식 (0) 2022.05.13