본문 바로가기
Spring

[Spring] Model 객체

by 코딩로그 2022. 9. 17.

model 객체

1. controller에서 생성한 데이터를 담아서 view로 전달할때 사용하는 객체입니다. 예를 들어 게시판의 목록을 구현할때 리스트를 model에 담아 view에서 접근할 수 있게 됩니다. 

2. model은 key와 value 값을 가진 HashMap 형태를 갖고 있습니다. model.addAttribute("key", "value") 메서드를 통해 전달하고자 하는 데이터를 전달할 수 있게 됩니다.

 

 

model 객체 사용법

model.addAttribute("키", "값");

 

 

아래는 controller에서 게시글 목록 페이지를 구현하는 메서드입니다. 특히 예시로 가져온 게시글 목록을 구현하기 위해서는 데이터를 List형태로 보내주어야 합니다.

@RequestMapping(value= "/list", method=RequestMethod.GET)
	public void list(@RequestParam(value="nowPageNum", required=false) String nowPageNum, @RequestParam(value="category") String category, @RequestParam(value="keyword", required=false) String keyword, Model model) {

		if(nowPageNum == null) {
			nowPageNum = "1";
		} 
		
		int nowPageNumber = Integer.parseInt(nowPageNum);
		
		PageVO pageVO = new PageVO(nowPageNumber, service.getTotal(keyword, category), keyword);
		
		model.addAttribute("category", category);
		model.addAttribute("list", service.listView(pageVO, category));
		model.addAttribute("keyword", keyword);
		model.addAttribute("paging", pageVO);
	}

 

 

 

다음은 view입니다.  view에서는 위에서 작성한 메서드에서 model을 통해 넘긴 데이터를 사용하기 위해 for문을 사용하였습니다. (넘겨진 데이터가 List 형태이므로 for문으로 하나씩 접근해야 합니다.)

<c:forEach items="${list}" var="board">
	<tr class="odd gradeX">
	<td>
	<a class='move' href='<c:out value="${contextPath}/board/detail.do?boardNO=${board.boardNO}"/>'>
    	<c:out value="${board.title}" />
	</a>
	</td>
	<td><c:out value="${board.id}" /></td>
	<td>
		<fmt:formatDate pattern="yyyy-MM-dd" value="${board.writeDate}" />
	</td>
	<td><c:out value="${board.count}"/></td>
    </tr>                                
</c:forEach>

 

 


ModelAndView 객체

model 객체와 비슷하나 model 객체는 데이터만 저장하는 반면에 ModelAndView 객체는 데이터와 view를 함께 보냅니다.

ModelAndView에는 setViewName() 메서드가 있고, 이 메서드를 통해 이동할 페이지를 설정할 수 있게 됩니다.