1) BoardController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @RequestMapping("mainPage") public String mainPage(Model model, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum) { ArrayList<HashMap<String, Object>> dataList = boardService.getBoardList(pageNum); int count = boardService.getBoardCount(); int totalPageCount = (int)Math.ceil(count/10.0); // 1 2 3 4 5 , 6 7 8 9 10 int startPage = ((pageNum-1)/5)*5 + 1; int endPage = ((pageNum-1)/5 + 1)*(5); if(endPage > totalPageCount){ endPage = totalPageCount; } model.addAttribute("count", count); model.addAttribute("startPage", startPage); model.addAttribute("endPage", endPage); model.addAttribute("currentPage", pageNum); model.addAttribute("totalPageCount", totalPageCount); model.addAttribute("dataList", dataList); return "board/mainPage"; } | cs |
2) BoardService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public ArrayList<HashMap<String, Object>> getBoardList(int pageNum) { ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>(); ArrayList<BoardVo> boardVoList = boardSQLMapper.getBoardList(pageNum); for (BoardVo boardVo : boardVoList) { int userNo = boardVo.getUser_no(); // 작성자 번호... UserVo userVo = userSQLMapper.getUserByNo(userNo); // SELECT * FROM FP_MEMBER WHERE member_no = #{no} HashMap<String, Object> map = new HashMap<String, Object>(); map.put("userVo", userVo); map.put("boardVo", boardVo); // 현재 글이...지금시간 -3 시간 보다 클때... Date writeDate = boardVo.getBoard_writedate(); long writeTime = writeDate.getTime(); long currentTime = System.currentTimeMillis(); long targetTime = currentTime - 1000 * 60 * 60 * 3; if (writeTime > targetTime) { map.put("newKeyword", true); } dataList.add(map); } return dataList; } public int getBoardCount() { return boardSQLMapper.getBoardCount(); } | cs |
3) BoardSQLMapper.java
1 2 3 4 5 | /*게시글 목록 출력 (1개행일떄는 단일객체 리턴 1개이상일떈 ArrayList 리턴)*/ public ArrayList<BoardVo> getBoardList(int pageNum); /*총 게시글 갯수*/ public int getBoardCount(); | cs |
4) BoardSQLMapper.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <select id="getBoardList" resultType="com.spring.example.vo.BoardVo"> SELECT t2.* FROM ( SELECT t1.* , ROWNUM AS rnum FROM ( SELECT fb.* FROM EXAMPLE_BOARD fb , EXAMPLE_USER fm WHERE fb.user_no = fm.user_no ORDER BY fb.board_no DESC ) t1 ) t2 <![CDATA[ WHERE t2.rnum >= (#{pageNum} - 1) * 10 + 1 AND t2.rnum <= #{pageNum} * 10 ]]> </select> <select id="getBoardCount" resultType="int"> SELECT COUNT(*) FROM EXAMPLE_BOARD fb , EXAMPLE_USER fm WHERE fb.user_no = fm.user_no </select> | cs |
5. mainPage.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <div class="row mt-3"> <div class="col-5"></div> <div class="col"> <nav aria-label="..."> <ul class="pagination mb-0"> <c:choose> <c:when test="${startPage <= 1}"> <li class="page-item disabled"> <a class="page-link"><</a> </li> </c:when> <c:otherwise> <li class="page-item"> <a class="page-link" href="./mainPage?pageNum=${startPage-1 }${additionalParam}"><</a> </li> </c:otherwise> </c:choose> <c:forEach begin="${startPage}" end="${endPage}" var="i"> <c:choose> <c:when test="${currentPage == i}"> <li class="page-item active"> <a class="page-link" href="./mainPage?pageNum=${i}${additionalParam}">${i}</a> </li> </c:when> <c:otherwise> <li class="page-item"> <a class="page-link" href="./mainPage?pageNum=${i}${additionalParam}">${i}</a> </li> </c:otherwise> </c:choose> </c:forEach> <c:choose> <c:when test="${endPage >= totalPageCount}"> <li class="page-item disabled"> <a class="page-link">></a> </li> </c:when> <c:otherwise> <li class="page-item"> <a class="page-link" href="./mainPage?pageNum=${endPage+1 }${additionalParam}">></a> </li> </c:otherwise> </c:choose> </ul> </nav> </div> </div> | cs |
6) 실행화면
'공부 > Spring' 카테고리의 다른 글
[Spring] 게시판 만들기 : 댓글 목록 (0) | 2022.09.10 |
---|---|
[Spring] 게시판 만들기 : 게시글 검색 (0) | 2022.09.10 |
[Spring] 게시판만들기 : 조회수증가 (0) | 2022.09.09 |
[Spring] 게시판 만들기 : 최신글 (0) | 2022.09.09 |
[Spring] 게시판 만들기 : 게시글 수정 및 삭제 (0) | 2022.09.08 |
댓글