-
학원 day48. 게시판 만들기 실습, 페이지 네비게이션기록 2022. 11. 12. 21:23
페이지 내비게이션 출력하기
1. 한 화면에 표시할 페이지번호 개수 결정하기
int pages = 5;
2. 총 페이지블록 개수를 계산하기
int totalPageBlocks = (int) Math.ceil ((double) totalPages/pages);
// (int) Math.ceil((double) 8/5) = 2
3. 현재 페이지블록을 계산하기
int currentPageBlock = (int) Math.ceil((double) currentPage/pages);
// (int) Math.ceil((double) 7/5) = 2
4. 현재 페이지블록에 맞는 시작페이지번호와 끝페이지번호를 계산하기
int beginPage = (currentPageBlock -1)*pages + 1;
int endPage = currentPageBlock*pages;
if (currentPageBlock == totalPageBlocks) {
endPage = totalPages;
}
<% // 페이지 내비게이션 표시 // 1. 한 화면에 표시할 페이지번호 갯수를 결정한다. int pages = 5; // 2. 전체 책 갯수를 조회한다. int totalRows = bookDao.getTotalRows(); // 3. 전체 페이지 갯수를 계산한다. int totalPages = (int) Math.ceil((double) totalRows/rows); // 4. 전체 페이지 블록 갯수를 계산한다. int totalPageBlocks = (int) Math.ceil((double) totalPages/pages); // 5. 현재 페이지가 속한 페이지 블록을 계산하기 int currentPageBlock = (int) Math.ceil((double) currentPage/pages); // 6. 현재 페이지블록의 시작페이지번호와 끝 페이지번호를 계산하기 int beginPage = (currentPageBlock - 1)*pages + 1; int endPage = currentPageBlock == totalPageBlocks ? totalPages : currentPageBlock*pages; %> <div aria-label="navigation"> <ul class="pagination justify-content-center"> <li class="page-item <%=currentPage <= 1 ? "disabled" : "" %>"> <a class="page-link" href="list.jsp?page=<%=currentPage - 1 %>">이전</a> </li> <% for (int number = beginPage; number <= endPage; number++) { %> <li class="page-item <%=currentPage == number ? "active" : "" %>"> <a class="page-link" href="list.jsp?page=<%=number %>"><%=number %></a> </li> <% } %> <li class="page-item <%=currentPage >= totalPages ? "disabled" : "" %> "> <a class="page-link"href="list.jsp?page=<%=currentPage + 1 %>">다음</a> </li> </ul> </div>
< 게시판 만들기 >
테이블 생성 및 시퀀스 생성
CREATE TABLE SAMPLE_BOARDS (
BOARD_NO NUMBER(5) CONSTRAINT BOARD_NO_PK PRIMARY KEY,
BOARD_TITLE VARCHAR2(255) NOT NULL,
BOARD_WRITER VARCHAR2(100) NOT NULL,
BOARD_READ_COUNT NUMBER(5) DEFAULT 0,
BOARD_REVIEW_COUNT NUMBER(5) DEFAULT 0,
BOARD_CONTENT VARCHAR2(200) NOT NULL,
BOARD_DELETED CHAR(1) DEFAULT 'N',
BOARD_CREATED_DATE DATE DEFAULT SYSDATE,
BOARD_UPDATED_DATE DATE DEFAULT SYSDATE
);
CREATE TABLE SAMPLE_BOARD_REVIEWS (
REVIEW_NO NUMBER(5) CONSTRAINT BOARD_REVIEW_NO_PK PRIMARY KEY,
REVIEW_WRITER VARCHAR2(100) NOT NULL,
REVIEW_CONTENT VARCHAR2(1000) NOT NULL,
REVIEW_CREATED_DATE DATE DEFAULT SYSDATE,
BOARD_NO NUMBER(5) CONSTRAINT REVIEW_BOARD_NO_FK REFERENCES SAMPLE_BOARDS (BOARD_NO)
);CREATE SEQUENCE SAMPLE_BOARDS_SEQ START WITH 10000 NOCACHE;
CREATE SEQUENCE SAMPLE_REVIEWS_SEQ START WITH 10000 NOCACHE;환경 세팅하기
1. 라이브러리 파일을 src/main/webapp/WEB-INF/lib 폴더에 추가한다.
ojdbc11.jar
ibatis-2.3.4.726.jar
2. ibatis 환경설정
src/main/resources "소스폴더"를 추가한다.
src/main/resources "소스폴더"에 META-INF/ibatis/mappers "폴더"를 추가한다.
src/main/resources/META-INF/ibatis/mappers 폴더에 매퍼파일을 추가한다.
boards.xml, reviews.xml
src/main/resources/META-INF/ibatis 폴더에 ibatis-config.xml 파일을 추가한다.
ibatis-config.xml 파일에 boards.xml과 reviews.xml 파일을 등록한다.
3. 패키지 생성 및 유틸리티 클래스 추가
com.sample.util 패키지를 추가한다.
com.sample.util 패키지에 SqlMapper.java와 StringUtils.java를 추가한다.
com.sample.vo 패키지를 추가한다.
Board.java와 Review.java를 추가한다.
com.sample.dao 패키지를 추가한다.
BoardDao.java와 ReviewDao.java를 추가한다.
4. JSP 구현하기
src/main/webapp 폴더에 jsp 파일을 추가한다.
home.jsp
list.jsp
form.jsp
register.jsp
detail.jsp, [리뷰 : addReview.jsp, deleteReview.jsp]
delete.jsp
modifyform.jsp
update.jsp'기록' 카테고리의 다른 글
학원 day50. 회원가입, 로그인/로그아웃, 게시글 수정/삭제 (0) 2022.11.15 학원 day49. 게시판 리뷰 기능, 쿠키/세션, JSP 주요객체 (0) 2022.11.14 학원 day47. 웹 실습, 페이징처리 (0) 2022.11.11 학원 day46. JSP실습 (0) 2022.11.09 학원 day45. JSP(2) 구성요소, 내장객체, 요청파라미터값 전달방식 (0) 2022.11.08