티스토리 뷰

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 설정  (4) 2021.01.06
Spring MVC  (0) 2021.01.06
댓글
Total
Today
Yesterday
링크