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-란