티스토리 뷰

Framework/Spring

페이징 처리

Seogineer 2021. 1. 7. 20:14

SQL

SELECT id, name, content, regdate FROM guestbook ORDER BY id DESC limit :start, :limit; --LIMIT 시작점, 갯수

 

Controller

defaultValue="0"에 의해 처음은 0 번째부터 5개를 출력한다.
그 다음부터 pageCount에 따라 pageStartList에 5, 10, 15 등의 값이 들어갈 수 있다.

@Autowired
GuestbookService guestbookService;

@GetMapping(path="/list")
public String list(@RequestParam(name="start", required=false, defaultValue="0") int start, ModelMap model) {
    // start로 시작하는 방명록 목록 구하기
    List<Guestbook> list = guestbookService.getGuestbooks(start);

    // 전체 페이지수 구하기
    int count = guestbookService.getCount();
    int pageCount = count / 5;
    if(count % 5 > 0)
        pageCount++;

    // 페이지 수만큼 start의 값을 리스트로 저장
    // 예를 들면 페이지수가 3이면
    // 0, 5, 10 이렇게 저장된다.
    // list?start=0 , list?start=5, list?start=10 으로 링크가 걸린다.
    List<Integer> pageStartList = new ArrayList<>();
    for(int i = 0; i < pageCount; i++) {
        pageStartList.add(i*5);
    }

    model.addAttribute("list", list);
    model.addAttribute("count", count);
    model.addAttribute("pageStartList", pageStartList);

    return "list";
}

 

JSP

페이지 번호를 누르면 URL에 ${pageIndex} 값을 전달하여 값을 시작점으로 해서 5개 만큼 결과를 보여준다.

<h1>방명록</h1>
<br> 방명록 전체 수 : ${count}
<br>
<br>
<c:forEach items="${list}" var="guestbook">
  ${guestbook.id}<br>
  ${guestbook.name}<br>
  ${guestbook.content}<br>
  ${guestbook.regdate}<br>
</c:forEach>
<br>
<c:forEach items="${pageStartList}" var="pageIndex" varStatus="status">
  <a href="list?start=${pageIndex}">${status.index+1}</a>&nbsp; &nbsp;
</c:forEach>
<br>
<br>
<form method="post" action="write">
  name : <input type="text" name="name"><br>
  <textarea name="content" cols="60" rows="6"></textarea>
  <br><input type="submit" value="등록">
</form>

 

참조

원본 소스 - https://github.com/seogineer/guestbook
https://www.boostcourse.org/web316/lecture/254352/
https://www.boostcourse.org/web316/lecture/254353/
https://www.boostcourse.org/web316/lecture/254354/
https://www.boostcourse.org/web316/lecture/254355/
https://www.boostcourse.org/web316/lecture/254356/

'Framework > Spring' 카테고리의 다른 글

Spring session으로 로그인 기능 구현  (0) 2021.01.26
트랜잭션(Transaction)  (0) 2021.01.10
Spring MVC 실행 과정 및 Controller 작성  (0) 2021.01.06
Spring MVC 설정  (0) 2021.01.06
Spring MVC  (0) 2021.01.06
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글