취미로 음악을 하는 개발자

[Spring Boot] Model 객체 본문

공대인/Spring[Boot]

[Spring Boot] Model 객체

영월특별시 2019. 7. 31. 21:00
728x90

Model 객체


- 모델은 HashMap 형태를 갖고 있으므로 key값과 value값처럼 사용할 수 있다.

- addAttribute는 Map의 put과 같은 기능과 같아서 이를 통해 해당 모델에 원하는 속성과 그것에 대한 값을 주어 전달할 뷰에 데이터를 전달할 수 있다.




프로젝트 생성


* 이전 포스트의 내용을 그대로 갖고와서 일부만 수정하면 된다. (build.gradleapplication.properties 부분도 꼭 복사하길 바란다.)





코드 구현


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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() throws Exception{
        return "Model & View";
    }
    
    @RequestMapping("/test1")    // localhost:8081/test1
    public String test1(Model model) {
        // Model 객체를 이용해서, view로 Data 전달
        // 데이터만 설정 가능
        model.addAttribute("name""홍길동");
        
        return "test1";            // 실제 호출 될 /WEB-INF/views/test1.jsp
    }
    
    @RequestMapping("/mv")
    public ModelAndView test2(Model model) {
        // 데이터와 뷰를 동시에 설정 가능
        ModelAndView mv = new ModelAndView();
        
        List<String> list = new ArrayList<>();
        
        list.add("test1");
        list.add("test2");
        list.add("test3");
        
        mv.addObject("lists", list);        // jstl로 호출
        mv.addObject("ObjectTest""테스트");    // jstl로 호출
        mv.addObject("name""홍길동");        // jstl로 호출
        mv.setViewName("view/myView");    // 실제로 호출될 /WEB-INF/jsp/view/myView.jsp
        
        return mv;
    }
}
 
cs


/

String 그대로 리턴이 됨


/test1

모델 객체에 데이터를 저장, name이라는 속성에 홍길동이라는 값을 넣어준 것

이것을 test1.jsp를 통해 호출


/mv

(아직까지는 ModelAndView를 왜 쓰는지 모르겠다. 그냥 데이터를 View에다가 전달하는 것과 뭐가 다를까..)


ModelAndView로 데이터를 만들어서 직접 뷰를 만듬

list를 만들고 값을 넣어줬고, mv에 속성과 값들을 넣어주었다.

이것을 myView.jsp를 통해 호출



// test1.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    out.println("Hello World");
%>
<br>
당신의 이름은 ${name } 입니다.
</body>
</html>
cs



// myView.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    out.println("Model(sub) : Hello World");
%>
<br>
 
${ObjectTest }
<br>
 
${lists}
<br>
<br>
 
<c:forEach var="mylist" items="${lists }">
    ${mylist }<br>
</c:forEach>
 
<br>
<br>
당신의 이름은 ${name }입니다.
</body>
</html>
cs


(c 타입에 대해서는 나중에 따로 포스트를 만들어 보겠다.)



* 앞으로의 포스트에서는 기본적으로 build.gradle과 application.properties, webapp 폴더 등은 이전 포스트 프로젝트의 파일들을 복사해서 갖고 올 것이다.



'공대인 > Spring[Boot]' 카테고리의 다른 글

[String Boot] lombok  (0) 2019.08.02
[Spring Boot] Form  (0) 2019.07.31
[Spring Boot] 정적 리소스  (0) 2019.07.31
[Spring Boot] 의존 주입 방법  (0) 2019.07.29
Spring Boot 개념 정리 시작  (0) 2019.07.29
Comments