java, spring

[Spring] 페이징 화면 처리 - 3 -

isaac.kim 2021. 7. 17. 23:41
728x90
반응형

[Spring] 페이징 화면 처리 - 3 -

이전 글

2021.07.17 - [Spring] - [Spring] 페이징 화면 처리 - 2 -

2021.07.17 - [Spring] - [Spring] 페이징 화면 처리 - 1 -

 

 

이전 글 내용에 이어서 작성한 글입니다.

 

조회 페이지에서 수정/삭제 페이지로 이동

조회 페이지에서는 'Modify' 버튼을 통해 수정/삭제 페이지로 이동하게 됩니다. 수정/삭제 페이지에서는 다시 목록으로 가는 버튼이 존재하므로 동일하게 목록 페이지에 필요한 파라미터들을 처리해야 합니다. BoardController에서는 get( ) 메서드에서 '/get'과 '/modify'를 같이 처리하므로 별도의 추가적인 처리 없이도 Criteria를 Model에 cri라는 이름으로 담아서 전달합니다.

 

조회 페이지에서 <form> 태그는 목록 페이지로의 이동뿐 아니라 수정/삭제 페이지 이동에도 사용되기 때문에 파라미터들은 자동으로 같이 전송됩니다.

 

수정과 삭제 처리

modify.jsp에서는 <form> 태그를 이용해서 데이터를 처리합니다. 거의 입력과 비슷한 방식으로 구현되는데, 이제 pageNum과 amount라는 값이 존재하므로 <form> 태그내에서 같이 전송할 수 있게 수정해야 합니다.

modify.jsp 역시 Criteria를 Model에서 사용하기 때문에 위와 같이 태그를 만들어서 <form> 태그 전송에 포함합니다.

 

수정/삭제 처리 후 이동

POST 방식으로 진행하는 수정과 삭제 처리는 BoardController에서 각각의 메서드 형태로 구현되어 있으므로 페이지 관련 파라미터들을 처리하기 위해서는 변경해 줄 필요가 있습니다.

 

BoardController 클래스의 modify 메서드

메서드의 파라미터에는 Criteria가 추가된 형태로 변경되고, RedirectAttributes 역시 URL 뒤에 원래의 페이지로 이동하기 위해서 pageNum과 amount 값을 가지고 이동하게 수정합니다.

 

삭제 처리 역시 동일하게 Criteria를 받아들이는 방식으로 수정합니다.

위와 같은 방식을 이용하면 수정/삭제 후 기존 사용자가 보던 페이지로 이동하는 것을 볼 수 있습니다.

 

게시물 번호 768의 내용을 수정한 뒤에 원래 보던 3페이지로 이동한 것을 확인할 수 있습니다.

삭제하는 경우도 같습니다.

 

수정/삭제 페이지에서 목록 페이지로 이동

페이지 이동의 마지막은 수정/삭제를 취소하고 다시 목록 페이지로 이동하는 것입니다. 목록 페이지는 오직 pageNum과 amount만을 사용하므로 <form> 태그의 다른 내용들은 삭제하고 필요한 내용만을 다시 추가하는 형태가 편리합니다.

 

modify.jsp의 javascript 부분

사용자가 'List' 버튼을 클릭한다면 <form> 태그에서 필요한 부분만 잠시 복사(clone)해서 보관해 두고, <form> 태그 내의 모든 내용은 지워버립니다(empty). 이후에 다시 필요한 태그들만 추가해서 '/board/list'를 호출하는 형태를 이용합니다.


Mybatis에서 전체 데이터의 개수 처리

최종적으로는 데이터베이스에 있는 실제 모든 게시물의 수(total)를 구해서 PageDTO를 구성할 때 전달해 주어야 합니다. BoardMapper 인터페이스에 getTotalCount( ) 메서드를 정의하고 XML을 이용해서 SQL을 처리합니다.

 

BoardMapper 인터페이스

getTotalCount( )는 Criteria를 파라미터를 전달받도록 설계하지 않아도 문제가 생기지는 않지만, 게시물의 목록과 전체 데이터 수를 구하는 작업은 일관성 있게 Criteria를 받는 것이 좋습니다.

 

BoardMapper.xml의 일부 : 데이터 전체 개수를 구하는 sql 작성

 

BoardService 인터페이스 일부

BoardServiceImpl 클래스 일부

 

BoardController에서는 BoardService 인터페이스를 통해서 getTotal( )을 호출하도록 변경합니다.

BoardController 클래스 일부

 

이상으로 게시물의 등록, 수정, 삭제, 조회, 페이징 처리를 마쳤습니다.

728x90
반응형