728x90

ํ์ฌ๋ ์ด๋ ๊ฒ ํ์ด์ง ๊ฐ์ ์ ์ฒด๊ฐ ๋ค ์ถ๋ ฅ๋๋ค.
BoardController - getListPage์ ์ถ๊ฐ
// ๊ฒ์๋ฌผ ๋ชฉ๋ก + ํ์ด์ง ์ถ๊ฐ
@GetMapping("/listPage")
public void getListPage(@RequestParam("num") int num, Model model) throws Exception {
//๊ฒ์๋ฌผ ์ด ๊ฐฏ์
int count = boardService.count();
//ํ ํ์ด์ง์ ์ถ๋ ฅํ ๊ฒ์๊ธ ๊ฐฏ์
int postNum = 10;
//ํ๋จ ํ์ด์ง ๋ฒํธ([ ๊ฒ์๊ธ ์ด ๊ฐฏ์ / ํ ํ์ด์ง์ ์ถ๋ ฅํ ๊ฐฏ์])์ ๋ฐ์ฌ๋ฆผ)
int pageNum = (int)Math.ceil((double)count/postNum);
//์ถ๋ ฅํ ๊ฒ์๊ธ
int displayPost = (num - 1) * postNum;
//ํ ๋ฒ์ ํ์ํ ํ์ด์ง ๋ฒํธ์ ๊ฐฏ์
int pageNum_cnt = 10;
//ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ๋ง์ง๋ง ๋ฒํธ
int endPageNum =(int)(Math.ceil((double)num/(double)pageNum_cnt) * pageNum_cnt);
//ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ์ฒซ ๋ฒ์งธ ๋ฒํธ
int startPageNum = endPageNum -(pageNum_cnt -1);
//๋ง์ง๋ง ๋ฒํธ ์ฌ๊ณ์ฐ( ์ด ํ์ด์ง ์ซ์๋ณด๋ค ํด ์ ์์)
if(endPageNum > pageNum) {
endPageNum = pageNum;
}
//์์ ํ์ด์ง๊ฐ 1์ด๋ฉด ์ด์ ํ์ด์ง๋ ์๋ค. ๊ทธ ์ธ๋ ์์.
boolean prev = startPageNum ==1? false : true;
//๋ง์ง๋ง ํ์ด์ง๊ฐ ์ด ํ์ด์ง๋ณด๋ค ์์ผ๋ฉด ๋ค์ ํ์ด์ง๊ฐ ์์.
boolean next = endPageNum < pageNum ? true : false;
List<BoardVO> list = null;
list = boardService.listPage(displayPost, postNum);
model.addAttribute("list", list); //ํ์ฌ num ํ์ด์ง์ ๊ฒ์๊ธ ๋ฐ์ดํฐ
model.addAttribute("pageNum", pageNum); //์ด ํ์ด์ง ์ซ์
// ์์ ๋ฐ ๋ ๋ฒํธ
model.addAttribute("startPageNum", startPageNum);
model.addAttribute("endPageNum", endPageNum);
// ์ด์ ๋ฐ ๋ค์
model.addAttribute("prev", prev);
model.addAttribute("next", next);
}
listPage.jsp
<%-- <c:forEach begin="1" end="${pageNum}" var="num">
<span>
<a href="/board/listPage?num=${num}">${num}</a>
</span>
</c:forEach> --%>
์ฒ์์ ํ ์คํธ๋ก ํ ๋ฐ๋ณต๋ฌธ์ ์ฃผ์์ฒ๋ฆฌ ํ ํ ์๋์ ์ฝ๋๋ก ๋ณ๊ฒฝ
<c:if test="${prev}">
<span>[ <a href="/board/listPage?num=${startPageNum - 1}">์ด์ </a>
]
</span>
</c:if>
<c:forEach begin="${startPageNum}" end="${endPageNum}" var="num">
<span> <c:if test="${select != num}">
<a href="/board/listPage?num=${num}">${num}</a>
</c:if> <c:if test="${select == num}">
<b>${num}</b>
</c:if>
</span>
</c:forEach>
<c:if test="${next}">
<span>[ <a href="/board/listPage?num=${endPageNum + 1}">๋ค์</a>
]
</span>
</c:if>

๋ง์ง๋ง ํ์ด์ง

BoardController์ ํ์ด์ง ๊ธฐ๋ฅ ๊ตฌํ์ด ๊ธธ์ด์
ํด๋์ค๋ก ๋ฐ๋ก ๋ง๋ฌ

package com.board.domain;
public class Page {
// ํ์ฌ ํ์ด์ง ๋ฒํธ
private int num;
// ๊ฒ์๋ฌผ ์ด ๊ฐฏ์
private int count;
// ํ ํ์ด์ง์ ์ถ๋ ฅํ ๊ฒ์๋ฌผ ๊ฐฏ์
private int postNum = 10;
// ์ด ํ์ด์ง ์ซ์ ([ ๊ฒ์๋ฌผ ์ด ๊ฐฏ์ ÷ ํ ํ์ด์ง์ ์ถ๋ ฅํ ๊ฐฏ์ ]์ ์ฌ๋ฆผ)
private int pageNum;
// ์ถ๋ ฅํ ๊ฒ์๋ฌผ
private int displayPost;
// ํ๋ฒ์ ํ์ํ ํ์ด์ง ๋ฒํธ์ ๊ฐฏ์
private int pageNumCnt = 10;
// ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ๋ง์ง๋ง ๋ฒํธ
private int endPageNum;
// ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ์ฒซ๋ฒ์งธ ๋ฒํธ
private int startPageNum;
// ๋ค์/์ด์ ํ์ ์ฌ๋ถ
private boolean prev;
private boolean next;
//getter setter
//setter๋ count๋ num๋ง ์์ฑ
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getPostNum() {
return postNum;
}
public int getPageNum() {
return pageNum;
}
public int getDisplayPost() {
return displayPost;
}
public int getPageNumCnt() {
return pageNumCnt;
}
public int getEndPageNum() {
return endPageNum;
}
public int getStartPageNum() {
return startPageNum;
}
public boolean isPrev() {
return prev;
}
public boolean isNext() {
return next;
}
}
getter setter ๋ง๋ค๊ธฐ

public void dataCalc() {
//ํ๋จ ํ์ด์ง ๋ฒํธ([ ๊ฒ์๊ธ ์ด ๊ฐฏ์ / ํ ํ์ด์ง์ ์ถ๋ ฅํ ๊ฐฏ์])์ ๋ฐ์ฌ๋ฆผ)
pageNum = (int)Math.ceil((double)count/postNum);
//์ถ๋ ฅํ ๊ฒ์๊ธ
displayPost = (num - 1) * postNum;
//ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ๋ง์ง๋ง ๋ฒํธ
endPageNum =(int)(Math.ceil((double)num/(double)pageNumCnt) * pageNumCnt);
//ํ์๋๋ ํ์ด์ง ๋ฒํธ ์ค ์ฒซ ๋ฒ์งธ ๋ฒํธ
startPageNum = endPageNum -(pageNumCnt -1);
//๋ง์ง๋ง ๋ฒํธ ์ฌ๊ณ์ฐ( ์ด ํ์ด์ง ์ซ์๋ณด๋ค ํด ์ ์์)
if(endPageNum > pageNum) {
endPageNum = pageNum;
}
//์์ ํ์ด์ง๊ฐ 1์ด๋ฉด ์ด์ ํ์ด์ง๋ ์๋ค. ๊ทธ ์ธ๋ ์์.
prev = startPageNum ==1? false : true;
//๋ง์ง๋ง ํ์ด์ง๊ฐ ์ด ํ์ด์ง๋ณด๋ค ์์ผ๋ฉด ๋ค์ ํ์ด์ง๊ฐ ์์.
next = endPageNum < pageNum ? true : false;
}
BoardController ์์
// ๊ฒ์๋ฌผ ๋ชฉ๋ก + ํ์ด์ง ์ถ๊ฐ
@GetMapping("/listPage")
public void getListPage(@RequestParam("num") int num, Model model) throws Exception {
int count = boardService.count();
Page page = new Page();
page.setNum(num);
page.setCount(count);
page.dataCalc();//ํ์ด์ง์ ์ด๊ฒ์๊ธ๋ก ๊ณ์ฐํ๊ธฐ
List<BoardVO> list = boardService.listPage(page.getDisplayPost(), page.getPostNum());
model.addAttribute("list", list); //ํ์ฌ num ํ์ด์ง์ ๊ฒ์๊ธ ๋ฐ์ดํฐ
model.addAttribute("pageNum", page.getPageNum()); //์ด ํ์ด์ง ์ซ์
// ์์ ๋ฐ ๋ ๋ฒํธ
model.addAttribute("startPageNum", page.getStartPageNum());
model.addAttribute("endPageNum", page.getEndPageNum());
// ์ด์ ๋ฐ ๋ค์
model.addAttribute("prev", page.getPrev());
model.addAttribute("next", page.getNext());
//ํ์ฌ ์ ํํ ํ์ด์ง
model.addAttribute("select", num);
}
ํ ์คํธํ๊ธฐ

BoardController ์ page ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ ์ฌ์ฉ๊ฐ๋ฅํจ.
// ๊ฒ์๋ฌผ ๋ชฉ๋ก + ํ์ด์ง ์ถ๊ฐ
@GetMapping("/listPage")
public void getListPage(@RequestParam("num") int num, Model model) throws Exception {
int count = boardService.count();
Page page = new Page();
page.setNum(num);
page.setCount(count);
page.dataCalc();//ํ์ด์ง์ ์ด๊ฒ์๊ธ๋ก ๊ณ์ฐํ๊ธฐ
List<BoardVO> list = boardService.listPage(page.getDisplayPost(), page.getPostNum());
model.addAttribute("list", list); //ํ์ฌ num ํ์ด์ง์ ๊ฒ์๊ธ ๋ฐ์ดํฐ
model.addAttribute("page", page); // ํ์ด์ง ๊ฐ์ฒด
model.addAttribute("select", num);//ํ์ฌ ์ ํํ ํ์ด์ง
}
listpage.jsp
์์
<c:if test="${page.prev}">
<span>[ <a href="/board/listPage?num=${page.startPageNum - 1}">์ด์ </a>
]
</span>
</c:if>
<c:forEach begin="${page.startPageNum}" end="${page.endPageNum}" var="num">
<span> <c:if test="${select != num}">
<a href="/board/listPage?num=${num}">${num}</a>
</c:if> <c:if test="${select == num}">
<b>${num}</b>
</c:if>
</span>
</c:forEach>
<c:if test="${page.next}">
<span>[ <a href="/board/listPage?num=${page.endPageNum + 1}">๋ค์</a>
]
</span>
</c:if>

์ ์ ์ถ๋ ฅ ํ์ธ
728x90
'BACKEND > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๊ฒ์ํ ๋ง๋ค๊ธฐ - ๋๊ธ DB์ ํ ์ด๋ธ ์ถ๊ฐ, ๊ฒ์๊ธ ๋๊ธ ์กฐํ (0) | 2023.10.25 |
|---|---|
| ๊ฒ์ํ ๋ง๋ค๊ธฐ - ๊ฒ์ ๊ธฐ๋ฅ (1) | 2023.10.24 |
| ๊ฒ์ํ ๋ง๋ค๊ธฐ - ํ์ด์ง ๊ธฐ๋ฅ ๊ตฌํ (2) | 2023.10.24 |
| ๊ฒ์ํ ๋ง๋ค๊ธฐ - ์กฐํ์ ์ฆ๊ฐ(UPDATE) ๊ธฐ๋ฅ ์ถ๊ฐ (0) | 2023.10.24 |
| ๊ฒ์ํ ๋ง๋ค๊ธฐ - ์ญ์ ํ๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ (0) | 2023.10.24 |