▶ PageUtil
페이지네이션은 데이터를 여러 페이지로 나누어 표시하고,
사용자가 페이지를 이동할 수 있는 링크 또는 버튼을 생성하는데 사용됩니다.
setPaging 메소드:
이 메소드는 페이지네이션 정보를 계산하고 멤버 변수에 저장합니다. 주어진 페이지 번호, 전체 항목의 개수,
및 한 페이지에 표시할 항목의 개수를 기반으로 페이지네이션 정보를 계산합니다.
getMvcPaging 메소드:
이 메소드는 전통적인 서버 사이드 렌더링에서 사용되며, 페이지 번호를 링크로 구성한 HTML 문자열을 반환합니다.
이를 통해 사용자가 페이지를 클릭하여 페이지를 전환할 수 있습니다.
getAjaxPaging 메소드:
이 메소드는 Ajax를 사용하여 페이지를 동적으로 변경할 때 사용됩니다.
페이지 번호를 JavaScript 함수 호출로 구성한 HTML 문자열을 반환합니다.
사용자가 페이지를 클릭하면 JavaScript 함수인 fnAjaxPaging을 호출하여 페이지를 비동기적으로 변경할 수 있습니다.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
package com.gdu.app14.util;
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.NoArgsConstructor;
@Component
@NoArgsConstructor
@Data
public class PageUtil {
private int page; // 현재 페이지 번호(요청 파라미터로 받는다.)
private int total; // 전체 항목의 개수(DB에서 구한 뒤 받는다.)
private int display; // 한 페이지에 표시할 항목의 개수(요청 파라미터로 받는다.)
private int begin; // 한 페이지에 표시되는 항목의 시작 번호(계산한다.)
private int end; // 한 페이지에 표시되는 항목의 종료 번호(계산한다.)
private int totalPage; // 전체 페이지의 개수(계산한다.)
private int pagePerBlock = 2; // 한 블록에 표시되는 페이지의 개수(임의로 정한다.)
private int beginPage; // 한 블록에 표시되는 페이지의 시작 번호(계산한다.)
private int endPage; // 한 블록에 표시되는 페이지의 종료 번호(계산한다.)
public void setPaging(int page, int total, int display) {
/* 한 페이지를 나타낼 때 필요한 정보 */
// 받은 정보 저장
this.page = page;
this.total = total;
this.display = display;
// 계산한 정보 저장
begin = (page - 1) * display + 1;
end = begin + display - 1;
end = end > total ? total : end;
/* 전체 페이지를 나타낼 때 필요한 정보 */
// 전체 페이지 계산
totalPage = (int)Math.ceil((double)total / display);
// 각 블록의 시작 페이지와 종료 페이지 계산
beginPage = ((page - 1) / pagePerBlock) * pagePerBlock + 1;
endPage = beginPage + pagePerBlock - 1;
endPage = endPage > totalPage ? totalPage : endPage;
}
public String getMvcPaging(String url) {
StringBuilder sb = new StringBuilder();
sb.append("<div>");
// 이전 블록
if(beginPage == 1) {
sb.append("<a>이전</a>");
} else {
sb.append("<a href=\"" + url + "?page=" + (beginPage - 1) + "\">이전</a>");
}
// 페이지 번호
for(int p = beginPage; p <= endPage; p++) {
if(p == page) {
sb.append("<a>" + p + "</a>");
} else {
sb.append("<a href=\"" + url + "?page=" + p + "\">" + p + "</a>");
}
}
// 다음 블록
if(endPage == totalPage) {
sb.append("<a>다음</a>");
} else {
sb.append("<a href=\"" + url + "?page=" + (endPage + 1) + "\">다음</a>");
}
sb.append("</div>");
return sb.toString();
}
public String getAjaxPaging() {
StringBuilder sb = new StringBuilder();
sb.append("<div>");
// 이전 블록
if(beginPage == 1) {
sb.append("<a>이전</a>");
} else {
sb.append("<a href=\"javascript:fnAjaxPaging(" + (beginPage-1) + ")\">이전</a>");
}
// 페이지 번호
for(int p = beginPage; p <= endPage; p++) {
if(p == page) {
sb.append("<a>" + p + "</a>");
} else {
sb.append("<a href=\"javascript:fnAjaxPaging(" +p+ ")\">"+p+"</a>");
}
}
// 다음 블록
if(endPage == totalPage) {
sb.append("<a>다음</a>");
} else {
sb.append("<a href=\"javascript:fnAjaxPaging(" + (endPage+1) + ")\">다음</a>");
}
sb.append("</div>");
return sb.toString();
}
}
|
cs |
회원을 등록하고 갯수가 넘어가면 페이지가 나타나 클릭이 가능합니다.
'코딩기록 저장소 🐕 > spring(JPA)🌱' 카테고리의 다른 글
10/18 CKEditor 사용 (0) | 2023.10.18 |
---|---|
배포 (0) | 2023.10.17 |
시험 review (0) | 2023.10.16 |
10/16 restApi (0) | 2023.10.16 |
트랜잭션 (0) | 2023.10.12 |