응답 - 정적 리소스, 뷰 템플릿
스프링(서버)에서 응답 데이터를 만드는 3가지 방법
정적 리소스 ex) 웹 브라우저에 정적인 HTML, css, js을 제공할 때
뷰 템플릿 사용 ex) 웹 브라우저에 동적인 HTML을 제공할 때
HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터 제공
정적 리소스
정적 리소스 경로 : src/main/resources/static 정적 리소스 생성 : src/main/resources/static/basic/hello-form.html => http://localhost:8080/basic/hello-form.html로 이동
2. 뷰 템플릿 사용 뷰 템플릿을 거쳐서 HTML이 생성되고, 뷰가 응답을 만들어서 전달한다. 일반적으로 HTML을 동적으로 생성하는 용도로 사용하지만, 뷰 템플릿이 만들 수 있는 것이라면 뭐든지 가능하다.
뷰 템플릿 경로 : src/main/resources/templates 뷰 템플릿 생성 : ex) src/main/resources/templates/response/hello.html
th:text => Model에서 "data"라는 key 값을 받아서 empty라는 텍스트 부분에 치환해서 넣어준다는 뜻이다!
뷰 템플릿을 호출하는 3가지 방법❤️⭐️ (@RestController, @ResponseBody ❌)
ModelAndView를 반환하는 컨트롤러 ModelAndView("response/hello") : 뷰의 논리 이름 넣어주며 ModelAndView 인스턴스 생성 .addObject("data","hello") : Model에 변수명(attributeName)과 변수 데이터(attributeValue) 넣어준다!
ModelAndView 구현 소스 참고
2. String을 반환하는 컨트롤러 : 반환되는 String이 뷰의 논리 이름이 된다. 메서드의 매개변수로 model을 넣어주어야 한다! model에 addAttribute로 attributeName과 attributeValue를 넣어준다!
3. 리턴 타입이 void인 경우(명시성이 떨어지기 때문에 권장하지 않는다.) 요청 URL과 렌더링하려는 뷰의 논리 이름이 같으면 리턴하는 것이 없어도 된다. 요청 URL과 동일한 이름의 뷰를 랜더링한다.
Last updated