반응형
2021.08.17 - [Java 및 JSP] - [JSP] DTO를 생성하면서 익히는 페이징 처리 과정
[JSP] DTO를 생성하면서 익히는 페이징 처리 과정
DTO(Data Transfer Object) 데이터를 오브젝트로 변환하는 객체로 VO는 DB에서 받아온 데이터를 그대로 전달한다면, DTO는 DB에서 받아온 데이터를 가공해서 전달 게시물 목록에서 페이징 처리를 하는 과
wheneveryouwantsz.tistory.com
BoardService 인터페이스를 구현한 BoardPagingService 작성
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
// page 파라미터에서 값을 전달 받음
String strPage = request.getParameter("page");
// page 파라미터에서 전달받을 값이 없을 경우에는 default 값으로 1을 설정
int currentPage = 1;
// page 파라미터에서 전달받을 값이 있을 경우에는 해당 값으로 페이지를 설정
if(strPage != null){
currentPage = Integer.parseInt(strPage);
}
BoardDAO dao = BoardDAO.getInstance();
// boardList 리스트를 생성해서 DAO에서 10개씩 페이징된 리스트를 가져옴
List<BoardVO> boardList = dao.getPageList(currentPage);
// DAO에서 전체 게시물 개수를 받아옴
int total = dao.getBoardCount();
// 이전에 작성한 pageDTO 객체를 생성해 위의 데이터들을 파라미터 값으로 작성
BoardDTO pageDTO = new BoardDTO(total, currentPage, boardList);
// 포워딩을 위한 request 객체 사용
request.setAttribute("boardList", boardList);
request.setAttribute("pageDTO", pageDTO);
JSP 파일 BoardList 아래 삽입될 페이지네이션
<!-- if문을 사용해서 게시물이 있는 경우에만 페이지네이션이 나타나도록 함 -->
<c:if test = "${pageDTO.hasBoard() }">
<!-- 이전으로 가는 버튼, 시작 페이지가 11이상일 경우에만 나타나도록 함 -->
<c:if test = "${pageDTO.startPage > 10 }">
<a href = "/프로젝트명/매핑한주소?page=${pageDTO.startPage - 10 }">[이전 페이지]</a>
</c:if>
<!-- 페이지 번호 10개 나열 -->
<c:forEach var = "pNo" begin = "${pageDTO.startPage }" end = "${pageDTO.endPage }">
<a href = ""/프로젝트명/매핑한주소?page=${pNo }" >[${pNo }]</a>
</c:forEach>
<!-- 다음으로 가는 버튼, 마지막 페이지가 전체페이지보다 적을 경우에만 나타나도록 함 -->
<c:if test = "${pageDTO.endPage < pageDTO.totalPages }">
<a href = "/프로젝트명/매핑한주소?page=${pageDTO.startPage - 10 }">[다음 페이지]</a>
</c:if>
</c:if>
'Java 및 JSP' 카테고리의 다른 글
[Java] 메서드 체이닝(Method Chaining) (0) | 2021.09.01 |
---|---|
[Java] 이클립스 기본 브라우저 Chrome 으로 변경 (0) | 2021.08.29 |
[JSP] MVC 구조에서 서비스와 인터페이스 (0) | 2021.08.21 |
[JSP] JSP 파일에서 CSS 파일 적용 시 경로 (0) | 2021.08.20 |
[JSP] DTO를 생성하면서 익히는 페이징 처리 과정 (0) | 2021.08.17 |