스프링부트 기본적인 개발환경 설정을 해서 게시판 만들기는 해당 주소를 참고 바랍니다.
https://astonysia-story.tistory.com/21
https://astonysia-story.tistory.com/22
paging 패키지를 만든어서 Criteria.java Paging.java 파일을 만듭니다.
Criteria.java
package com.example.demo.paging;
public class Criteria {
// 특정 페이지 조회를 위한 클래스
private int page; // 현재 페이지 번호
private int perPageNum; // 페이지당 보여줄 게시글의 개수
public int getPageStart() {
// 특정 페이지의 범위를 정하는 구간, 현재 페이지의 게시글 시작 번호
// 0 ~ 10 , 10 ~ 20 이런식으로
return (this.page -1) * perPageNum;
}
public Criteria() {
// 기본 생성자 : 최초 게시판에 진입시 필요한 기본값
this.page = 1;
this.perPageNum = 10;
}
// 현재 페이지 번호 page : getter, setter
public int getPage() {
return page;
}
public void setPage(int page) {
if(page <= 0) {
this.page = 1;
} else {
this.page = page;
}
}
// 페이지당 보여줄 게시글의 개수 perPageNum : getter, setter
public int getPerPageNum() {
return perPageNum;
}
public void setPerPageNum(int perPageNum) {
int cnt = this.perPageNum;
if(perPageNum != cnt) {
this.perPageNum = cnt;
} else {
this.perPageNum = perPageNum;
}
}
@Override
public String toString() {
return "Criteria [page=" + page + ", perPageNum=" + perPageNum + "]";
}
}
Paging.java
package com.example.demo.paging;
public class Paging {
private int totalCount; // 게시판 전체 데이터 개수
private int displayPageNum = 10; // 게시판 화면에서 한번에 보여질 페이지 번호의 개수
private int startPage; // 화면의 시작 번호
private int endPage; // 화면의 끝 번호
private boolean prev; // 페이징 이전 버튼 활성화 여부
private boolean next; // 페이징 다음 버튼 활성화 여부
private Criteria cri;
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
pagingData();
}
private void pagingData() {
endPage = (int) (Math.ceil(cri.getPage() / (double) displayPageNum) * displayPageNum);
// endPage = (현재 페이지 번호 / 화면에 보여질 페이지 번호의 개수) * 화면에 보여질 페이지 번호의 개수
startPage = (endPage - displayPageNum) + 1;
// startPage = (끝 페이지 번호 - 화면에 보여질 페이지 번호의 개수) + 1
int tempEndPage = (int) (Math.ceil(totalCount / (double) cri.getPerPageNum()));
if(endPage > tempEndPage) {
endPage = tempEndPage;
}
// 마지막 페이지 번호 = 총 게시글 수 / 한 페이지당 보여줄 게시글의개수
prev = startPage == 1 ? false : true;
// 이전 버튼 생성 여부 = 시작 페이지 번호가 1과 같으면 false, 아니면 true
next = endPage * cri.getPerPageNum() >= totalCount ? false : true;
// 다음 버튼 생성 여부 = 끝 페이지 번호 * 한 페이지당 보여줄 게시글의 개수가 총 게시글의 수보다
// 크거나 같으면 false, 아니면 true
}
public int getDisplayPageNum() {
return displayPageNum;
}
public void setDisplayPageNum(int displayPageNum) {
this.displayPageNum = displayPageNum;
}
public int getStartPage() {
return startPage;
}
public void setStartPage(int startPage) {
this.startPage = startPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public boolean isPrev() {
return prev;
}
public void setPrev(boolean prev) {
this.prev = prev;
}
public boolean isNext() {
return next;
}
public void setNext(boolean next) {
this.next = next;
}
public Criteria getCri() {
return cri;
}
public void setCri(Criteria cri) {
this.cri = cri;
}
@Override
public String toString() {
return "PageMaker [totalCount=" + totalCount + ", startPage=" + startPage + ", endPage=" + endPage + ", prev="
+ prev + ", next=" + next + ", displayPageNum=" + displayPageNum + ", cri=" + cri + "]";
}
}
그리고 이미 스프링부트 게시판 만들기에서 만든 TestVo.java에 이걸 추가를 합니다.
extends Criteria
TestController.java에 해당내용을 추가를 합니다.
TestController.java
// 페이징 객체
Paging paging = new Paging();
paging.setCri(vo);
paging.setTotalCount(151); // 리스트 총갯수 (디비에서 count(*) 가지고 와야 함)
request.setAttribute("paging", paging);
그리고 test.jsp 에 해당 내용을 하단에 추가를 합니다.
<ul class="paging">
<c:if test="${paging.prev}">
<span><a href='<c:url value="/test?page=${paging.startPage-1}"/>'>이전</a></span>
</c:if>
<c:forEach begin="${paging.startPage}" end="${paging.endPage}" var="num">
<span><a href='<c:url value="/test?page=${num}"/>'>${num}</a></span>
</c:forEach>
<c:if test="${paging.next && paging.endPage>0}">
<span><a href='<c:url value="/test?page=${paging.endPage+1}"/>'>다음</a></span>
</c:if>
</ul>
그리고 페이지를 띄우면 정상적으로 되는걸 볼수 있습니다.
결과)
'IT, 인터넷 > JAVA, 스프링부트' 카테고리의 다른 글
자바 LIST, ArrayList, getter, setter 사용하여 클래스 변수에 값 넣고 확인 하기 (0) | 2021.09.18 |
---|---|
자바 while문 으로 1~10 까지 더하기 (0) | 2021.09.17 |
스프링부트 오라클 연동 하기 (1) | 2021.09.17 |
자바 기초 Scanner로 중복된 이름 찾기(ArrayList String) (7) | 2021.09.16 |
스프링부트로 gradle(그래들) 프로젝트 만들기 (0) | 2021.09.15 |