-@SessionAttribute에서 세션 영역에 저장한 값을 command객체에 setter 주입합니다.
@RequestParam
@SessionAttributes
HttpSession을 직접 사용할 수도 있지만
이 어노테이션을 설정한 이름에 해당하는 모델 정보를 자동으로 세션에 넣어줍니다.
@ModelAttribute는 세션에 있는 데이터도 바인딩합니다.
여러 화면에서 사용해야 하는 객체를 공유할 때 사용합니다.
직접 사용해서 확인해보겠습니다.
예를 들어 수정 폼에서 수정(submit)을 누르고나면 updateBoard.do를 호출하게 되고
컨트롤러중에서 requestmapping("/updateBoard.do")가 이걸 처리해주게 되는데
현재 폼에서 수정했던 부분을 vo.setWriter(rs.getWriter("작성자")) 이런식으로 가져오지 않는 이상
request영역의 정보를 컨트롤러가 알수 없습니다.
하지만 @SessionAttribute를 이용하면 이 부분을 해결할수 있습니다.
글 수정하고나서 수정한 부분을 안할경우 지금은 null값으로 나오고 있습니다. 하지만
수정을 안해도 지금 적힌 값을 출력을 해줘야합니다.
하지만 다음과 같이 컨트롤러에 @SessionAttributes("board")를 넣어주고
getBoard.do에서 @ModelAttribute("board) 를 model.addAttribute("board",~~) 으로 값을 주입했기 때문에
model에서 board를 찾으면 ~~값을 찾게된다.
@SessionAttibutes("board")를 적어줌으로서 model에 등록된 board를 찾아서 사용하고
실제 사용할 update에서는 vo객체 앞에 @ModelAttribute("board")를 적어줌으로써 컨트롤러에서도
값을 가져온 상태로 key 값인 "board"를 사용합니다.
사용할땐 지금처럼 @ModelAttribute("board")를 사용해야합니다.위에서 setter주입했기 때문에
@ModelAttribute 특징
@ModelAttribute("conditionMap")
public Map<String,String> searchConditionMap(){
Map<String, String> conditionMap = new HashMap<String,String>();
conditionMap.put("제목", "TITLE");
conditionMap.put("내용", "CONTENT");
return conditionMap;
}
'Spring' 카테고리의 다른 글
Spring 게시판 검색기능 구현 (0) | 2022.08.19 |
---|---|
Spring 비즈니스 계층과 영속계층의 분리 (0) | 2022.08.19 |
Spring requestMapping 공부하기 (0) | 2022.08.18 |
Spring (@Controller,@RequestMapping) (0) | 2022.08.18 |
Spring ViewResolver 사용해보기 (0) | 2022.08.18 |
댓글