페이지 기능 추가
게시판 목록의 개수를 늘릴때 필요한 페이지 기능을 추가해보기로 한다.
먼저, 페이지에 대한 클래스를 작성한다.
1. Page.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
37
38
39
40
|
package com.myboard.vo;
public class Page {
private int pageNum;
private int amount;
public Page() {
this(1, 10);
}
public Page(int pageNum, int amount) {
this.pageNum=pageNum;
this.amount=amount;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
@Override
public String toString() {
return String.format("[%dpage, %damount]", pageNum,amount);
}
}
|
현재를 기준으로 페이지에 대한 번호를 생성해야하므로 (Previous, next) 그 값을 계산하기 위한
PakeMaker 클래스 생성
2. PageMaker.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
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
|
package com.myboard.vo;
public class PageMaker {
private int startPage;
private int endPage;
private boolean hasNext,hasPrev;
private int total;
private Page page;
final int paginationSize=10;
public PageMaker(Page page,int total) {
int pageNum=page.getPageNum();
int amount=page.getAmount();
this.page=page;
this.total=total;
endPage=(int) (Math.ceil(pageNum/10.0)*(double)paginationSize);
//10을 곱하는 이유는 전체번호가 1~10까지이기 때문에 startPage=endPage-(paginationSize-1);
int totalEndPage=(int)Math.ceil((double)total/amount);
if(endPage>totalEndPage)
endPage=totalEndPage;
hasNext=endPage!=totalEndPage;
hasPrev=startPage!=1;
}
@Override
public String toString() {
return String.format("[시작페이지=%d, 끝페이지=%d, 다음페이지=%s, 이전페이지=%b]",
startPage,endPage,hasNext,hasPrev);
}
public int getStartPage() {
return startPage;
}
public int getEndPage() {
return endPage;
}
public boolean isHasNext() {
return hasNext;
}
public boolean isHasPrev() {
return hasPrev;
}
public int getTotal() {
return total;
}
public Page getPage() {
return page;
}
}
|
이후, MyBoardMapper로 이동해서
public List<MyBoardVo> getListWithPaging(Page page) 및 public int getTotal() 에 대한 인터페이스를 추가한다.
3. 인터페이스 추가
페이지별로 출력되는 게시물의 수를 10개로 설정하기 MyBoardMapper.xml 코드 수정하자.
기존의 getList에 대한 코드가 모두 출력하는 코드이기에 이에 한 조정도 필요하다.
4. xml 코드 수정
서비스 계층에 대한 MyBoardService 및 MyBoardServiceImpl의 코드를 수정하자.
5. 비즈니스 계층 처리
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
|
package com.myboard.service;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.myboard.mapper.MyBoardMapper;
import com.myboard.vo.MyBoardVo;
import com.myboard.vo.Page;
@Service
public class MyBoardServiceImpl implements MyBoardService {
@Autowired
private MyBoardMapper mapper;
private Logger log=Logger.getLogger(MyBoardServiceImpl.class);
/*
@Override
public List<MyBoardVo> getList() {
log.info("글 목록");
return mapper.getList();
}
*/
@Override
public void register(MyBoardVo board) {
log.info("새 글 등록:"+board);
mapper.insert(board);
}
@Override
public MyBoardVo get(String id) {
log.info("글 보기:"+id);
return mapper.read(id);
}
@Override
public boolean remove(String id) {
log.info("글 삭제:"+id);
return mapper.delete(id)==1;
}
@Override
public boolean modify(MyBoardVo board) {
log.info("글 수정:"+board);
return mapper.update(board)==1;
}
@Override
public List<MyBoardVo> getList(Page page){
log.info("get List With Page : "+page);
return mapper.getListWithPaging(page);
}
@Override
public int getTotal() {
return mapper.getTotal();
}
}
|
6. 컨트롤러 계층 처리
기존의 /list에 대한 매핑을 주석처리 후 Page를 추가한 매핑으로 연결한다.
페이지에 대한 버튼 및 이에 대한 스타일을 지정해준다.
7. list.jsp 수정
실행하기 앞서, 데이터가 현재 16개 밖에 없으므로 시퀀스를 생성 후, 데이터를 추가해보자.
8. sqldeveloper 데이터 추가
이제 서버를 실행하면 아래와 같이 페이지에 대한 게시판을 만들 수 있게 된다.
'언어 > Spring' 카테고리의 다른 글
스프링[Spring] 게시판 만들기_05 (0) | 2020.07.15 |
---|---|
스프링[Spring] 게시판 만들기_04 (1) | 2020.07.08 |
스프링[Spring] 게시판 만들기_03 (0) | 2020.07.07 |
스프링[Spring] 게시판 만들기_02 (0) | 2020.07.06 |
스프링[Spring] 게시판 만들기_01 (0) | 2020.06.24 |