From 45171620b435be716c58f0cdf3798392efbd2c58 Mon Sep 17 00:00:00 2001 From: USER Date: Thu, 20 Aug 2026 16:09:15 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=95=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../board/controller/BoardController.java | 26 ++++++++++++------- .../itpinc/first/common/dao/AbstractDAO.java | 3 ++- .../itpinc/first/common/util/CommonUtils.java | 23 ++++++++++++++++ .../webapp/WEB-INF/include/include-page.jspf | 20 ++++++++++++++ .../webapp/WEB-INF/jsp/sample/boardList.jsp | 6 ++--- 5 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 src/main/webapp/WEB-INF/include/include-page.jspf diff --git a/src/main/java/kr/itpinc/first/board/controller/BoardController.java b/src/main/java/kr/itpinc/first/board/controller/BoardController.java index 7f16de1..03ed12b 100644 --- a/src/main/java/kr/itpinc/first/board/controller/BoardController.java +++ b/src/main/java/kr/itpinc/first/board/controller/BoardController.java @@ -8,6 +8,7 @@ import java.util.Map.Entry; import jakarta.servlet.http.HttpServletRequest; import kr.itpinc.first.board.service.BoardService; import kr.itpinc.first.common.common.CommandMap; +import kr.itpinc.first.common.util.CommonUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Pageable; @@ -31,7 +32,7 @@ public class BoardController @Autowired private BoardService boardService; //샘플서비스 선언하고 - + @RequestMapping(value="/sample/openBoardSearch.do") public ModelAndView openBoardSearch(CommandMap commandMap) throws Exception @@ -52,6 +53,7 @@ public class BoardController // 이 안에서 pageable 객체를 열어보면 계산이 다 끝나 있습니다. int currentPage = pageable.getPageNumber(); // 현재 페이지 번호 (0부터 시작) int pageSize = pageable.getPageSize(); // 페이지당 데이터 수 (10) + long totalCount = 0; long offset = pageable.getOffset(); // DB 쿼리용 시작 위치 (0 * 10 = 0) Map param = commandMap.getMap(); param.put("PAGE_INDEX", currentPage); @@ -59,14 +61,15 @@ public class BoardController param.put("START", offset); - List> resultMap = boardService.selectBoardList(param); + List> resultList = boardService.selectBoardList(param); // 🌟 원인 파악을 위한 디버깅 코드 3줄 추가 🌟 - System.out.println("넘어온 파라미터: " + commandMap.getMap()); - System.out.println("DB 조회 건수: " + resultMap.size()); - if(!resultMap.isEmpty()) { - System.out.println("첫 번째 데이터 형태: " + resultMap.get(0)); + log.debug("넘어온 파라미터: " + commandMap.getMap()); + log.debug("DB 조회 건수: " + resultList.size()); + if(!resultList.isEmpty()) { + log.debug("첫 번째 데이터 형태: " + resultList.get(0)); + totalCount = Long.parseLong(String.valueOf(resultList.get(0).get("TOTAL_COUNT")) ); } @@ -74,11 +77,14 @@ public class BoardController //앞에서 샘플서비스 선언한것 뒤에 selectBoardList라는 메서드 만들고 //mv.addObject("list", list); //앞에서 실행 다하고 list에 담긴건 list라고 선언하고 - //mv.addObject("paginationInfo", (PaginationInfo)resultMap.get("paginationInfo")); - log.info(resultMap.toString()); - mv.addObject("list", resultMap); + - log.info(""); + //페이징렌더링용 Map데이터 출력 + Map pagingMap = CommonUtils.makePagingMap(currentPage, totalCount, pageSize, 10); + mv.addObject("list", resultList); + mv.addObject("pagingInfo", pagingMap); + log.info(resultList.toString()); + log.info(pagingMap.toString()); return mv; diff --git a/src/main/java/kr/itpinc/first/common/dao/AbstractDAO.java b/src/main/java/kr/itpinc/first/common/dao/AbstractDAO.java index 47880dc..625ceef 100644 --- a/src/main/java/kr/itpinc/first/common/dao/AbstractDAO.java +++ b/src/main/java/kr/itpinc/first/common/dao/AbstractDAO.java @@ -132,7 +132,7 @@ public class AbstractDAO { if(pageIndex < 1) { pageIndex = 1; } - + // 2. 정상적인 START, END 계산 int end = pageIndex * pageRow; int start = (pageIndex - 1) * pageRow + 1; @@ -142,6 +142,7 @@ public class AbstractDAO { return sqlSession.selectList(queryId, map); } + } diff --git a/src/main/java/kr/itpinc/first/common/util/CommonUtils.java b/src/main/java/kr/itpinc/first/common/util/CommonUtils.java index e52b2b9..07d1470 100644 --- a/src/main/java/kr/itpinc/first/common/util/CommonUtils.java +++ b/src/main/java/kr/itpinc/first/common/util/CommonUtils.java @@ -1,6 +1,8 @@ package kr.itpinc.first.common.util; import java.util.UUID; +import java.util.HashMap; +import java.util.Map; public class CommonUtils { @@ -8,4 +10,25 @@ public class CommonUtils { return UUID.randomUUID().toString().replaceAll("-", ""); } + + public static Map makePagingMap(int currentPage, long totalCount, int pageSize, int pageBlockSize) { + Map paging = new HashMap<>(); + + // 전체 페이지 수 계산 + int totalPages = (int) Math.ceil((double) totalCount / pageSize); + if (totalPages == 0) totalPages = 1; + + // 페이지 블록 시작/끝 번호 계산 (예: 1~10, 11~20) + int startPage = ((currentPage - 1) / pageBlockSize) * pageBlockSize + 1; + int endPage = Math.min(startPage + pageBlockSize - 1, totalPages); + + paging.put("currentPage", currentPage); + paging.put("totalPages", totalPages); + paging.put("startPage", startPage); + paging.put("endPage", endPage); + paging.put("hasPrev", startPage > 1); + paging.put("hasNext", endPage < totalPages); + + return paging; + } } diff --git a/src/main/webapp/WEB-INF/include/include-page.jspf b/src/main/webapp/WEB-INF/include/include-page.jspf new file mode 100644 index 0000000..7609a15 --- /dev/null +++ b/src/main/webapp/WEB-INF/include/include-page.jspf @@ -0,0 +1,20 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="jakarta.tags.core" %> + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/sample/boardList.jsp b/src/main/webapp/WEB-INF/jsp/sample/boardList.jsp index d031589..1aa06ee 100644 --- a/src/main/webapp/WEB-INF/jsp/sample/boardList.jsp +++ b/src/main/webapp/WEB-INF/jsp/sample/boardList.jsp @@ -49,8 +49,8 @@ - - + + <%@ include file="/WEB-INF/include/include-page.jspf" %> @@ -90,7 +90,7 @@ { var comSubmit = new ComSubmit(); comSubmit.setUrl(""); - comSubmit.addParam("currentPageNo", pageNo); + comSubmit.addParam("page", pageNo); comSubmit.submit(); }