
myHomelist controller
@RequestMapping(value = "/myHomeList.do", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView myHomelist(@RequestParam(defaultValue = "1") int section, @RequestParam(defaultValue = "1") int pageNo,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 게시글목록 + 페이징 추가
int pageSize = 12; // 한 페이지에 12개
int startPage = (section - 1) * 100 + (pageNo - 1) * pageSize + 1;
int endPage = (section - 1) * 100 + (pageNo * pageSize);
List<MyhomeDomain> myhomeList = myhomeService.listArticles(startPage,endPage); // 게시글 조회
//int totalArticles = myhomeService.totalArticles(); // 총 게시글 수
int totalArticles = 500; // 총 게시글 수 테스트용
int totalPages = (int) Math.ceil((double)totalArticles/pageSize); // 총 페이지수
System.out.println("section?"+section+",pageNo?"+pageNo);
System.out.println("startPage?"+startPage+",endPage?"+endPage+",totalArticles?"+totalArticles+",totalPages?"+totalPages);
ModelAndView mav = new ModelAndView("/board/board_myhome/myHomeList");
mav.addObject("myhomeList", myhomeList); // "myhomeList"라는 이름으로 데이터를 JSP로 전달
mav.addObject("section",section);
mav.addObject("pageNo",pageNo);
mav.addObject("startPage",startPage);
mav.addObject("endPage",endPage);
mav.addObject("totalArticles",totalArticles);
mav.addObject("totalPages",totalPages);
return mav;
}
service
public List<MyhomeDomain> listArticles(int startPage,int endPage) throws Exception {
List<MyhomeDomain> myhomeList = myhomeDAO.selectAllArticlesList(startPage,endPage); // 게시글 조회
return myhomeList;
}
DAO
public List selectAllArticlesList(int startPage, int endPage) throws DataAccessException {
Map<String, Object> pages = new HashMap<>();
pages.put("startPage", startPage);
pages.put("endPage", endPage);
List<MyhomeDomain> myhomeList = sqlSession.selectList("mapper.board.selectAllArticlesList",pages);
System.out.println("myhomeList 조회 결과: " + myhomeList);
return myhomeList;
}
mapper
SELECT *
FROM (
SELECT
b.*,
i.imagefilename,
ROW_NUMBER() OVER (ORDER BY b.boardMyhomeUpdated DESC) AS recNum
FROM boardMyhome b
JOIN image i ON b.boardmyhomearticleno = i.articleno
WHERE i.imagetype = '커버'
)
WHERE recNum BETWEEN #{startPage} AND #{endPage}
myHomeList.jsp
<!-- 게시글 정보 -->
<div class="card-content">
<h3>
<!-- 조회수 증가 후 게시글 상세페이지 이동 -->
<a href="${contextPath}/board/board_myhome/viewCount.do?boardMyhomeArticleNo=${article.boardMyhomeArticleNo}">
${article.boardMyhomeTitle}</a>
</h3>
<p>작성자: ${article.memberId}</p>
<p>❤️ ${article.boardMyhomeLikes} | 👀 ${article.boardMyhomeViews}</p>
<p>${article.boardMyhomeUpdated}</p>
<p>${article.boardMyhomeArticleNo}</p> <!-- 확인용,나중에 지울 것 -->
</div>
myHomeList.jsp - pagination
<ul class="pagination">
<c:if test="${totalArticles != null }" >
<c:set var="startPageNum" value="${(section - 1) * 10 + 1}" />
<c:set var="endPageNum" value="${startPageNum + 9}" />
<c:if test="${endPageNum > totalPages}">
<c:set var="endPageNum" value="${totalPages}" />
</c:if>
<!-- 이전 버튼 -->
<c:if test="${section > 1}">
<a href="?section=${section-1}&pageNo=1"> ‹ </a>
</c:if>
<!-- 페이지 번호 -->
<c:forEach var="i" begin="${startPageNum}" end="${endPageNum}">
<a href="?section=${section}&pageNo=${i}" class="${i == pageNo ? 'active' : ''}">
${i}
</a>
</c:forEach>
<!-- 다음 버튼 -->
<c:if test="${endPageNum < totalPages}">
<a href="?section=${section+1}&pageNo=1"> › </a>
</c:if>
</c:if>
</ul>