본문 바로가기
Spring/이론

model/ ModelAndView

by SEOKIHOUSE 2023. 7. 18.

이렇게 쓰던걸 스프링으로 해볼거다

 


  • Model 객체는 스프링 MVC에서 데이터를 뷰로 전달하는 데 사용되는 객체
  • model.addAttribute("name", "짱구"); 문장Model 객체를 사용하여 데이터를 뷰로 전달하는 역할을 합니다. 여기서는 "name"이라는 속성에 "짱구"라는 값을 추가합니다. 이렇게 추가된 속성은 뷰 템플릿에서 참조하여 데이터를 사용할 수 있습니다.


  • ModelAndView 객체를 사용하면 데이터와 뷰 정보를 동시에 설정할 수 있습니다.
  • mv.setViewName("sub/myView"); 문장은 ModelAndView 객체의 뷰 이름을 "sub/myView"로 설정합니다. 이는 뷰 리졸버(View Resolver)에 의해 실제 뷰 템플릿 파일인 "sub/myView.jsp"를 찾아 렌더링합니다.
  • return mv; 문장은 설정된 ModelAndView 객체를 반환합니다. 반환된 객체는 스프링 MVC에서 처리되어 설정된 뷰 템플릿 파일을 찾고, 데이터를 전달하여 렌더링합니다

 

practice0718_Model.zip
0.08MB

package com.study.springboot;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {
	
	@RequestMapping("/")
	public @ResponseBody String root() {
		return "Model & View";
	}
	
	@RequestMapping("/test1")
	public String test1(Model model) {
		//Model객체를 이용해서 view로 data전달
		//setattribute랑 같은데 model객체에 담는다 ->view에 전달이 된다
		model.addAttribute("name", "짱구");
		return "test1"; //view의 이름 test1.jsp
	}
	
	@RequestMapping("/mv")
	public ModelAndView test2() {
		//데이터와 뷰를 동시에 설정가능
		ModelAndView mv = new ModelAndView();
		
		List<String> list = new ArrayList<>();
		list.add("test1");
		list.add("test2");
		list.add("test3");
		
		mv.addObject("lists", list);
		mv.addObject("ObjectTest","테스트입니다");
		mv.addObject("name","짱구");
		mv.setViewName("sub/myView");
		
		return mv;
		
	}
	
	
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myView.jsp</title>
</head>
<body>
	<%
		out.print("Model(sub) : Hello World");
	%>
	<br><br>
	${ObjectTest }
	<br><br>
	
	${lists }
	
	<br><br>
	
	<c:forEach var="mylist" items="${lists }">
		${mylist }<br>
	</c:forEach>
	
	<br><br>
	당신의 이름은 ${name }입니다
	
</body>
</html>