Hansel

5. 스프링 MVC / 기타 본문

Spring/MVC

5. 스프링 MVC / 기타

핑슬 2022. 3. 26. 15:00
ModelAttribute

ModelAtrribute는 파라미터에 맞는 객체를 받아와서 생성한다.

 

위 사진의 과정은 다음과 같다.

  1. 폼에서 데이터 보냄 
  2. ModelAttribute로 객체 생성해서 service로 위임 
  3. service에서 업데이트 작업 수행 (Transactional 처리 필수)
  4. item객체 내부에서 데이터 변경
  5. JPA에서 변경감지 
  6. 데이터 수정

 

POST 이후 새로고침의 문제

** 포스트를 보낸 직후는 아직 내가 post한 데이터를 그대로 지니고있다. **

** 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다. **


상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST /add + 상품 데이터를 서버로 전송한다.
이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게
된다.
그래서 내용은 같고, ID만 다른 상품 데이터가 계속 쌓이게 된다.

 

해결 방법은?

=> 리다이렉트를 해야한다.
그러면 Get을 이용하여 해당 페이지로 가기 때문에 Post를 새로고침하지 않는다.

 

 

리다이렉션 보충

=> 성공적으로 POST 과정이 해결되었음을 알리고 싶다면?

redirectAttributes를 사용한다.

리다이렉션 하는 페이지에서 Attribute를 추가할 수 있고 이와 더불어

타임리프에서 해당 파라미터를 꺼내서 직접 사용할 수 있다.

 

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

검증 처리 / BindingResult  (0) 2022.03.29
6. 메세지와 국제화  (0) 2022.03.29
4. 스프링 MVC / 타임리프 기본  (0) 2022.03.26
3. 스프링 MVC 기본 기능 2  (0) 2022.03.26
2. 스프링 MVC 기본 기능 1  (0) 2022.03.26