20220527 내가 보기에는 정적(static)파일이 있는 곳과 동적(templates)파일이 모여있다는 차이가 있다고 생각함.
demo
|+-src/main
| +-java
| +-resources
| static
| templates
| application.properties
|-pom.xml
/static
을 이용해서 웹에서 호출할 수도 있습니다.java.util.Map
그리고 스프링의 org.springframework.ui.Model
과org.springframework.ui.ModelMap
타입의 파라미터는 모두 모델정보를 담는 데 사용할 수 있는 오브젝트가 전달된다. 모델을 담을 맵은 메소드 내에서 직접 생성할 수도 있지만 그보다는 파라미터로 정의해서 핸들러 어댑터에서 미리 만들어 제공해주는 것을 사용하면 편리하다. Model
과 ModelMap
은 모두 addAttribute()
메소드를 제공해준다. 일반적인 맵의 put()
처럼 이름을 지정해서 오브젝트 값을 넣을 수도 있고,자동 이름 생성 기능을 이용한다면 오브젝트만 넣을 수도 있다. 예를 들어 다음과 같이 ModelMap
에 User
타입의 오브젝트를 넣는다면 타입정보를 참고해서 "user"라는 모델 이름이 자동으로 부여 된다.@RequestMapping(...)
public void hello(ModelMap model) {
User user = new User(1z "Spring");
model.addAttribute(user) ; -> addAttributeCuser; user)와 동일
}
ModelMap
과 Model
의 addAllAttribute() 메소드를 사용하면 Collection
에 담긴 모든 오브젝트를 자동 이름 생성 방식을 적용해서 모두 모델로 추가해준다.Model
객체는 Controller
에서 생성된 데이터를 담아 View
로 전달할 때 사용하는 객체이다. ※ Servlet
의 request.setAttribute()
와 비슷한 역할을 함. addAttribute("key", "value")
메서드를 이용해 view
에 전달할 데이터를 key
, value
형식으로 전달할 수 있다.package com.mystudy.coco.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@GetMapping("/test")
public void testMethod(Model model) {
String msg = "model test";
model.addAttribute("value", msg);
}
}
<h2> Test Method : ${value} </h2>
https://velog.io/@han_been/서블릿-컨테이너Servlet-Container-란