개발자가 페이징처리를 해야하는이유
-> 개발자 입장에서는 게시물을 전체 조회해서 사용자에게 한번에 다 보여주는것이 편하겠지만 만약 너무 많은 게시물이 있을때 사용자의 입장에서는 게시물을 보는게 매우 불편할것입니다. 때문에 개발자는 사용자가 검색을 한 상태 또는 안한 상태에서도 게시물들을 페이징처리로 나눠서 사용자가 게시물들을 보기 편리하게 보여줘야합니다.
검색이 포함된 페이징을 구현할려면 사용자에게로부터 총 4개의 파라미터값을 받아와야합니다.
1. 어떤 컬럼으로 검색할것인지에 대한 상태(condition) - 검색
2. 사용자가 검색한 키워드(keyword) -검색
3. 사용자의 현재페이지(page) -페이지
4. 사용자가 한페이지당 보여질 게시물의 갯수(countPerPage) -페이지
위와같은 데이터들을 한 클래스에 모두 관리할수도 있겠지만 검색(SearchVO)클래스와 페이지(PageVO)클래스를 따로 만들어 관리하는게 좋습니다. 왜냐하면 사용자에게 검색기능이 포함된 페이지를 보여주는거기 때문에 객체지향언어의 특징인 상속을 사용하면 되기때문입니다. 이말은 즉 상속을 사용하게되면 만약 개발자가 검색기능을 잠깐 중지하거나 지울때 상속만 풀면 되기때문에 유지보수가 편리해지게됩니다. 자 그럼 페이지(PageVO)클래스와 검색(SearchVO)클래스를 생성해보도록 하겠습니다. 그리고 페이징을 하기위해서 만드는 클래스는 이 두가지가 끝이아니고 클래스를 하나 더 만들어 줘야하는데 그건 다음 글에서 작성하겠습니다.
#PageVO.java
->생성자로 변수들을 초기화시켜주는 이유는 사용자가 페이지번호를 누르기전엔 파라미터가 전달이 안되기때문에 그 상황을 대비하기 위해서 입니다.
|
package com.example.demo.paging;
public class PageVO {
private int page;
private int countPerPage;
public PageVO() {
this.page = 1;
this.countPerPage = 5;
}
public int getStartPage() {
return (page-1) * countPerPage;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getCountPerPage() {
return countPerPage;
}
public void setCountPerPage(int countPerPage) {
this.countPerPage = countPerPage;
}
}
|
cs |
#SearchVO.java
->생성자로 변수들을 초기화시켜주는이유는 위와같습니다
|
package com.example.demo.search;
import com.example.demo.paging.PageVO;
public class SearchVO extends PageVO{
private String keyword;
private String condition;
public SearchVO() {
this.keyword = "";
this.condition= "";
}
@Override
public String toString() {
return "SearchVO [keyword=" + keyword + ", condition=" + condition + "]";
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
}
|
cs |
'Spring Boot 개인 프로젝트 > 게시판(Board)' 카테고리의 다른 글
(5) 지금까지 한 내용 중간정리 그리고 IBoardService인터페이스와 BoardService구현 (0) | 2021.09.18 |
---|---|
(4 - 2)(게시물 리스트 페이징) 네비게이션 바를 만들기위한 PageCreator클래스 생성 (0) | 2021.09.18 |
(3) Mybatis를 사용하기위한 IBoardMapper 인터페이스 생성과 BoardMapper.xml생성 (0) | 2021.09.18 |
(2) BoardVO클래스 생성 (0) | 2021.09.18 |
(1) 게시글 정보를 관리할 Mysql DB 테이블 설계 (0) | 2021.09.18 |