일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인프런
- 이벤트리스너
- 자바스크립트함수
- slice
- 비주얼스튜디오
- 자바스크립트객체리터럴
- EntityFramework
- 콜백함수
- 자바스크립트파라미터
- 객체의비교
- 자바스크립트recude
- 인프런인강
- 인터넷프로토콜
- c#
- 자바스크립트
- HTTP
- 코딩
- 인프런무료강좌
- 인프런강의
- 고차함수
- NPM
- 자바스크립트틱택토
- 인프런자바스크립트
- 인프런강좌
- 객체리터럴
- 틱택토구현
- .NET
- 제로초
- sort
- Blazor
- Today
- Total
샐님은 개발중
8. HTTP 응답 - 정적 리소스, 뷰 템플릿 본문
스프링 (서버)에서 응답 메시지를 만드는 3가지 방법
정적 리소스
예) 웹 브라우저에 정적인 HTML, css, js제공 .
뷰 템플릿 사용
예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용.
HTTP 메시지 사용
HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로,
HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다
1. String을 반환하는 경우
- View or HTTP 메시지 @ResponseBody 가 없으면 response/hello 로 뷰 리졸버가 실행되어서 뷰를 찾고, 렌더링 한다. @ResponseBody 가 있으면 뷰 리졸버를 실행하지 않고, HTTP 메시지 바디에 직접 response/hello 라는 문자가 입력된다.
여기서는 뷰의 논리 이름인 response/hello 를 반환하면 다음 경로의 뷰 템플릿이 렌더링 되는 것을 확인할 수 있다.
실행: templates/response/hello.html
2. Void를 반환하는 경우
- @Controller 를 사용하고, HttpServletResponse , OutputStream(Writer) 같은 HTTP 메시지 바디를 처리하는 파라미터가 없으면 요청 URL을 참고해서 논리 뷰 이름으로 사용
요청 URL: /response/hello 실행: templates/response/hello.html 참고로 이 방식은 명시성이 너무 떨어지고 이렇게 딱 맞는 경우도 많이 없어서, 권장하지 않는다.
3. HTTP 메시지 @ResponseBody , HttpEntity 를 사용하면, 뷰 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 응답 데이터를 출력할 수 있다.
package hello.springmvc.basic.response;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class ResponseViewController {
@RequestMapping("/response-view-v1")
public ModelAndView responseViewV1(){
ModelAndView mav = new ModelAndView("response/hello")
.addObject("data","hello!");
return mav;
}
//String을 반환하는 경우 - View or HTTP 메시
@RequestMapping("/response-view-v2")
public String responseViewV2(Model model){
model.addAttribute("data","hello");
return "response/hello";
}
// 권장하지 않음
@RequestMapping("/response/hello") // 스프링이 관례적으로 논리적 뷰이름으로 매칭해줌
public void responseViewV3(Model model){
model.addAttribute("data","hello");
}
}
Thymeleaf 는 기본적으로 응답 화면으로 등록되어있다. 변경하고 싶으면 application.properties 에서 변경가능하다.
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
'스프링 MVC 1편 -인프런 김영한 > 섹션6-스프링MVC - 기본 기능' 카테고리의 다른 글
10. HTTP 메세지 컨버터 (1) | 2023.07.10 |
---|---|
9. HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 (1) | 2023.07.10 |
7. HTTP 요청 메시지 - JSON (0) | 2023.07.10 |
6. HTTP 요청 메시지 - 단순 텍스트 (0) | 2023.07.10 |
5. HTTP 요청 파라미터 - @ModelAttribute (0) | 2023.07.10 |