반응형
스프링 서버에서 응답 데이터를 받는 방법은 크게 3가지 정도로 나누어진다.
- 정적 리소스
- HTML, CSS, JS
- 뷰 템플릿 사용
- 웹 브라우저에 동적인 HTML을 제공할 때 뷰 템플릿을 사용한다.
- HTTP 메시지 사용
- HTTP API를 제공하는 경우에 HTML이 아니라 데이터를 전달해야 한다. 떄문에 HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다.
Spring Boot는 /static, /public, /resources, /META-INF/resources 디렉토리에 있는 정적 리소스를 제공한다. src/main/resources는 리소스를 보관하는 곳이면서 클래스 패스의 시작 경로이다. 이 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스를 제공하게 된다.
/src/main/resources/templates/response 경로에 hello.html파일을 넣어두고 이 뷰 템플릿을 호출하는 컨트롤러를 만들어 준다.
강의에서 항상 제일 정리가 안 된 코드를 보여주고 천천히 정리를 해 나간다.
- ModelAndView 공식 문서 참고(구글번역)
- 핸들러에 의해 반환된 모델 및 뷰를 나타낸다.
- ViewResolver 개체에 의해 해결되어야 하는 문자열 보기 이름의 형식을 취할 수 있다.
- View 개체를 직접 지정할 수 있다.
- 모델은 이름으로 키가 지정된 여러 개체를 사용할 수 있는 맵이다.
@RequestMapping("/response-view-v1")
public ModelAndView responseViewV1() {
ModelAndView mav = new ModelAndView("response/hello")
.addObject("data", "hello!");
return mav;
}
@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!");
}
Void를 반환하면 @Controller를 사용하고 HttpServletResponse, OutputStream(Writer)같은 HTTP 메시지 바디를 처리하는 파라미터가 없으면 요청 URL을 참고해서 논리 뷰 이름으로 사용하는데 명시성이 너무 떨어지고 이렇게 딱 맞는 경우도 없기 때문에 강의에서 강사님은 별로 추천하지 않는 방식이고 강사님은 v2 정도의 코드를 추천한다고 한다.
@ResponseBody가 없으면 response/hello 로 뷰 리졸버가 실행되서 뷰를 찾고 렌더링 하는데 저게 있으면 뷰 리졸버를 실행하지 않고 HTTP 메시지 바디에 직접 return이 출력이 된다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : HTTP 메시지 컨버터 (0) | 2022.01.28 |
---|---|
[Spring Boot] : HTTP, API 메시지 바디에 직접 입력해 HTTP 응답하기 (0) | 2022.01.28 |
[Spring Boot] : HTTP 요청 메시지 JSON (0) | 2022.01.26 |
[Spring Boot] : HTTP 요청 메시지 - 단순 텍스트 관련 알아보기 (0) | 2022.01.26 |
[Spring Boot] : HTTP 요청 파라미터 - @ModelAttribute (0) | 2022.01.25 |
댓글