관리 메뉴

공부한것들을 정리하는 블로그 입니다.

5. @SessionAttributes, @ModelAttribute 사용하기 본문

(2019) 사이드 프로젝트/BoardWeb2(게시판-SpringMVC)

5. @SessionAttributes, @ModelAttribute 사용하기

호 두 2019. 11. 26. 16:22
반응형

 

 

1. @SessionAttributes 사용하기

 

- @SessionAttributes 는 수정 작업을 처리할 때 유용하게 사용할 수 있는 어노테이션이다.

- @SessionAttributes 를 이용하여 특정 컬럼값이 null로 업데이트되지 않도록 처리 할 수 있다.

 

 

- 실행결과, 클라이언트가 요청할때 따로 넘겨주지 않은 파라미터들이 모두 넘어오는 것을 확인 할 수 있다.

( ex) 넘겨주도록 명시한 파라미터 : title, content, / 넘겨주도록 명시하지 않은 파라미터 : writer, regDate, cnt )

 

- 클래스명 상단에 입력한 @SessionAttributes("board") 설정으로 인하여, Model에 "board"라는 이름으로 저장되는 데이터가 자동으로 세션(HttpSession)에 저장되었기 때문이다.

 

- 따라서 getBoard() 메소드가 실행되어 상세화면이 출력되면, 일차적으로 Model에 "board"라는 이름으로 BoardVO 객체가 저장되고

- 이후 세션에도 "board"라는 이름으로 BoardVO 객체가 저장된다. 당연히 이 BoardVO 객체에는 상세화면에 출력된 모든 정보가 저장되어 있다. ( ex) 넘겨주도록 명시한 파라미터 : title, content, / 넘겨주도록 명시하지 않은 파라미터 : writer, regDate, cnt )

 

 

 

2. @ModelAttribute 사용하기

 

- 사용자가 글 수정 버튼을 클릭하면, updateBoard() 메소드가 실행된다.

- 이때 updateBoard()의 매개변수로 선언된 BoardVO 앞에 @ModelAttribute가 추가된 것이다.

 

- BoardController의 updateBoard() 메소드가 호출될 때, 스프링 컨테이너는 우선 @ModelAttribute("board") 설정을 해석하여, 세션에 "board"라는 이름으로 저장된 데이터가 있는지를 확인한다.

- 그리고 있다면 해당 객체를 세션에서 꺼내서 매개변수로 선언된 vo 변수에 할당한다.

- 그리고 사용자가 입력한 파라미터값을 vo 객체에 할당한다. 이때 사용자가 입력한 수정정보 값만 새롭게 할당되고, 나머지는 상세보기 했을때 세션에 저장된 데이터가 유지된다.

- 따라서 null 의 발생 및 입력이 방지된다.

 

 

 

 

 

 

반응형
Comments