티스토리 뷰

@SessionAttribute는 수정 작업을 처리할 때, 유용하게 사용할 수 있는 어노테이션이다. 모든 Controller 메서드는 Command 객체(VO 객체)를 전달 받아서 자동으로 처리되는데, 이때 사용자가 입력하지 않은 값또한 VO 객체에 포함이 되어 있다면, null 값으로 입력되어 함께 전달되게 된다.

 

대부분의 경우, null 값을 함께 전달해도 별 문제가 되지 않지만, 따로 주의하지 않고 프로젝트를 짜는 경우, 이 null 값이 DB에 함께 저장되어 출력이 되는 경우가 간혹 생기곤 한다.

 

이런 문제를 방지하기 위해 Spring은 @SessionAttribute 어노테이션을 제공한다. 


우선 @SessionAttribute는 기본적으로 @SessionAttribute("변수명") 형태로 사용하며, 

Model model.addAttribute("변수명", 변수(객체));
ModelAndView mav.ddAttribute("변수명", 변수(객체));

 형태로 저장되는 Model 객체가 있다면, 동일한 변수명을 가진 변수를 HttpSession에 동시에 저장하여 가지고 있는 것이다.

 

Session에 저장한 데이터는 @ModelAttribute 어노테이션이 붙은 동일한 객체에 자동 삽입되게끔 할 수 있다.

@RequestMapping("updateBoard.do")
public String updateBoard(@ModelAttribute("board") BoardVO vo, BoardDAO dao) {
  System.out.println("업데이트 처리");

  System.out.print(vo.getContent());
  dao.updateBoard(vo);

  return "redirect:getBoardList.do";
}

 

이는 어떤 게시글을 수정할 때, 매우 유용하게 사용된다.

 

Comments