스프링 - 페이징 화면 처리1. 페이징 화면 처리URL 파라미터로 정상적으로 원하는 페이지 번호를 표시해 사용자가 페이지 번호를 클릭할 수 있게 처리한다.
1-1. 페이징 처리할 때 필요한 정보들
1-1-1. 끝 페이지 번호와 시작 페이지 번호사용자 19페이지를 본다면 페이지 번호가 화면에 11~20까지 떠야한다. Show 페이징의 끝 번호 계산
끝 번호는 전체 데이터 수에 의해 영향을 받는다. 만일 10개 씩 보여주는 경우 전체 데이터 수가 80이라고 가정하면 끝 번호는 10이 아닌 8이 되어야 한다. 만일 끝 번호와 한 페이지당 출력되는 데이터 수의 곱이 전체 데이터 수보다 크다면 끝 번호는 다시 total을 이용해 계산되면 된다. total을 이용한 endpage의 재계산
이전과 다음이전 prev는 시작 번호가 1보다 큰 경우라면 존재한다. this.prev = this.startPage > 1; 다음 링크는 realEndrㅏ 끝 번호보다 큰 경우에만 존재한다.
1-2. 페이징 처리를 위한 클래스 설계클래스를 구성해 처리하면 편하다. Controller 계층에서 JSP 화면에 전달할 때도 객체를 생성해 Model에 담아 보내는 과정이 단순해진다.
total에 임의 값을 넣고 테스트 한다. 1-3. JSP에서 페이지 번호 출력JSTL로 처리한다.
list.jsp에서 form태그를 추가해 URL의 이동을 처리하도록 변경하였다.
1-4. 조회 페이지로 이동사용자가 3page 게시글을 클릭 후 목록으로 복귀하면 다시 1페이지로 이동된다. 해결하기 위해선 조회 페이지로 갈 때 현재 목록 페이지의 pageNum과 amount를 같이 전달해야 한다. form 태그에 추가로 게시물의 번호를 같이 전송하고 action 값을 조정해 처리할 수 있다. 페이지 번호는 조회 페이지에 전달되지 않기 때문에, 조회 페이지에서 목록 페이지로 다시 이동할 때 /board/list를 다시 호출하는 것.
1-4-1. 조회 페이지에서 다시 목록 페이지로 이동 - 페이지 번호 유지조회 페이지에서 다시 목록 페이지로 이동하기 위한 파라미터들이 같이 전송되었다면 조회 페이지에서 목록으로 이동하기 위한 이벤트를 처리해야 한다. BoardController의 get 메소드는 원래는 게시물의 번호만 받도록 처리되었지만 추가적인 파라미터가 붙으면서 Criteria도 추가해야 한다.
사용하지 않아도 Controller에 화면으로 파라미터가 된 객체가 전달되지만 좀 더 명시적으로 지정하기 위해 사용.
1-4-2. 조회 페이지에서 수정/삭제 페이지로 이동Modify 버튼을 통해 수정/삭제 페이지로 이동한다. 1-5. 수정과 삭제 처리
거의 입력과 비슷한 방식으로 구현되는데 이제 pageNum과 amount값이 존재하므로 form태그 내에서 같이 전송할 수 있게 수정해야 한다.
1-5-1. 수정 / 삭제 처리 후 이동POST 방식으로 진행되는 수정과 삭제 처리는 BoardController에서 각각의 메소드 형태로 구현되었으므로 페이지 관련 파라미터 처리를 위해 변형해야 한다.
1-5-2. 수정 / 삭제 페이지에서 목록으로 이동
1-6. MyBatis에서 전체 데이터 개수 처리최종적으로 데이터베이스에 있는 실제 모든 게시물의 수를 구해 PageDTO를 구성할 때 전달해 줘야 한다. BoardMapper 인터페이스에 getTotalCount() 메소드 정의.
|