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