Spring 객체바인딩(model)

Happy_JG·2023년 10월 12일

Spring

목록 보기
8/17

이전의 포스트에서 Board DTO를 생성했고 lombok API를 통해서 jstl/el문으로 접근할 수 있게되었다. controller에서 객체를 생성한 뒤 jsp파일에서 확인해보자!

@RequestMapping("boardList.do")
public String boardList(){	
    Board b1 = new Board(1,"안녕하세요","졸라맨","2023-10-12","5");
    Board b2 = new Board(2,"반갑습니다","배트맨","2023-10-12","1");
    Board b3 = new Board(3,"헬로우","침착맨","2023-10-12","4");
    Board b4 = new Board(4,"굿바이","슈퍼맨","2023-10-12","2");
    Board b5 = new Board(5,"환영합니다","울트라맨","2023-10-12","8");

    ArrayList<Board> lst = new ArrayList<Board>();
    list.add(b1);
    list.add(b2);
    list.add(b3);
    list.add(b4);
    list.add(b5);
}

controller에서 lst를 꺼내려면 어떻게 해야될까? 우선 jsp파일에서는 jstl로 forEach문을 통해 꺼내야 할 것이다.

이때 사용하는 것이 model이다. scope영역(session, context, application 등)에서는 setAttribution, getAttribution을 통해 jsp파일에서 꺼내올 수 있었다. 우리는 model을 써보자.

model

Spring 프레임워크에서 모델(Model) 객체를 사용하는 이유는 주로 웹 애플리케이션에서 데이터를 컨트롤러와 뷰(View) 사이에 전달하고 효율적으로 관리하기 위함이다. Model 객체는 데이터를 담고 이 데이터를 뷰로 전달하는 데 사용된다.Spring의 Model 객체를 사용하면 데이터의 전달과 분리성을 유지하며, 유연성과 스코프 관리를 제공하여 웹 애플리케이션 개발을 효과적으로 관리하고 테스트하는 데 도움을 준다.

public String boardList(Model model){....} 다음과 같이 model을 작성한다.

@RequestMapping("boardList.do")
public String boardList(){	
    Board b1 = new Board(1,"안녕하세요","졸라맨","2023-10-12","5");
    Board b2 = new Board(2,"반갑습니다","배트맨","2023-10-12","1");
    Board b3 = new Board(3,"헬로우","침착맨","2023-10-12","4");
    Board b4 = new Board(4,"굿바이","슈퍼맨","2023-10-12","2");
    Board b5 = new Board(5,"환영합니다","울트라맨","2023-10-12","8");

    ArrayList<Board> lst = new ArrayList<Board>();
    list.add(b1);
    list.add(b2);
    list.add(b3);
    list.add(b4);
    list.add(b5);
    
    model.addAttribute("list",lst)
    
    return "boardList";
}

우리가 생성한 리스트 lst를 "list"라는 이름으로 jsp파일에서 꺼내서 쓸 수 있다.

<c:forEach items="${list}" value="vo" varStatus="i">
	<tr>
      <td>${i.count}</td>
      <td>${vo.title}</td>
      <td>${vo.writer}</td>
      <td>${vo.indate}</td>
      <td>${vo.count}</td>
    </tr>

</c:forEach>

세션이 아닌 모델을 사용하는 이유

세션은 서버에서 데이터를 유지하는 기능을 수행한다. 세션에 담을 정보가 많으면 공간의 낭비가 된다. 모델은 일회성으로 세션과 달리 일회성이기 때문에 유저의 로그인 정보같이 데이터의 상태를 유지해야할 경우에는 세션을 사용한다.

profile
hello!

0개의 댓글