Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring Boot] 컨트롤러에서 정적/동적 콘텐츠를 클라이언트에 넘겨주는 방식 본문
𐂂 (1) 스프링부트 정적 콘텐츠 기능
정적 콘텐츠 파일을 그대로 클라이언트로 내려준다.
localhost:8080/hello-static.html과 같은 url로 접근했을 때,
hello-static와 매핑되는 컨트롤러를 찾아서 없으면,
🗂️resources/static에서 hello-static.html을 찾아서 있으면 반환한다.
매핑되는 컨트롤러가 있고, 리턴값으로 문자를 반환하면, 뷰 리졸버가 화면을 찾아서 처리한다.
(스프링부트 템플릿엔진 기본 viewName 매핑, 🗂️resources:templates/ + {viewName} + .html)
localhost:8080/hello-static.html과 같은 url로 접근했을 때,
hello-static와 매핑되는 컨트롤러를 찾아서 없으면,
🗂️resources/static에서 hello-static.html을 찾아서 있으면 반환한다.
매핑되는 컨트롤러가 있고, 리턴값으로 문자를 반환하면, 뷰 리졸버가 화면을 찾아서 처리한다.
(스프링부트 템플릿엔진 기본 viewName 매핑, 🗂️resources:templates/ + {viewName} + .html)
𐁍 MVC와 템플릿 엔진
Model View Controller 방식으로 쪼개고,
view를 찾아 템플릿엔진에 연결해주는 구조
(<- 뷰리졸버 역할) 템플릿엔진은 렌더링된 html을 클라이언트(웹브라우저)에 넘겨준다.
❓ 템플릿 엔진: 서버에서 렌더링한 html로 동적으로 바꿔서 내리는 역할 수행
view를 찾아 템플릿엔진에 연결해주는 구조
(<- 뷰리졸버 역할) 템플릿엔진은 렌더링된 html을 클라이언트(웹브라우저)에 넘겨준다.
❓ 템플릿 엔진: 서버에서 렌더링한 html로 동적으로 바꿔서 내리는 역할 수행
𖠃 API방식 (객체 반환)
JSON이라는 데이터포맷으로 클라이언트한테 데이터를 전달하는 방식
(🧾 서버끼리 통신할 때, html을 내릴 필요가 없다.)
(🧾 리액트 or 뷰에 데이터만 전달 할 때)
(🧾 서버끼리 통신할 때, html을 내릴 필요가 없다.)
(🧾 리액트 or 뷰에 데이터만 전달 할 때)
🦉 @ResponseBody
: HTTP 응답메시지의 본문(BODY)에 직접 데이터를 넣어주겠다.
(뷰없이 문자 그대로 내려간다.)
: HTTP 응답메시지의 본문(BODY)에 직접 데이터를 넣어주겠다.
(뷰없이 문자 그대로 내려간다.)
➼ 🦔 JSON 방식
객체를 반환하고 @ResponseBody를 붙이면
json으로 반환하는 것이 기본이다.
json으로 반환하는 것이 기본이다.
📜 Controller.java
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello; //객체를 반환
}
🕹️ 동작원리
컨트롤러에서 매핑된 메서드에 @ResponseBody 어노테이션이 붙어있으면,
viewResolver로 가는게 아닌 HttpMessageConverter로 간다.
리턴된 값이 단순 문자면 StringHttpMessageConverter가 동작하고,
문자 그 자체가 HTTP 본문에 실려 클라이언트에 내려지고,
리턴된 값이 객체면 MappingJackson2HttpMessageConverter가 동작하여
객체가 JSON으로 변환되어 HTTP 본문에 실려 클라이언트에 내려진다.
⚠️ 객체를 JSON으로 바꿔주는 라이브러리를 Jackson이라 한다.
⚠️ HTTP Accept 헤더와 컨트롤러 메서드 반환타입 정보를 조합하여, HttpMessageConverter가 선택된다.
컨트롤러에서 매핑된 메서드에 @ResponseBody 어노테이션이 붙어있으면,
viewResolver로 가는게 아닌 HttpMessageConverter로 간다.
리턴된 값이 단순 문자면 StringHttpMessageConverter가 동작하고,
문자 그 자체가 HTTP 본문에 실려 클라이언트에 내려지고,
리턴된 값이 객체면 MappingJackson2HttpMessageConverter가 동작하여
객체가 JSON으로 변환되어 HTTP 본문에 실려 클라이언트에 내려진다.
⚠️ 객체를 JSON으로 바꿔주는 라이브러리를 Jackson이라 한다.
⚠️ HTTP Accept 헤더와 컨트롤러 메서드 반환타입 정보를 조합하여, HttpMessageConverter가 선택된다.
'Backend > 스프링부트' 카테고리의 다른 글
[Spring Boot] 공통 관심사항을 모아놓고, 원하는 곳에 적용하는 AOP(Aspect Oriented Programming)와 이를 가능하게 하는 프록시 객체(가짜객체) (0) | 2023.09.27 |
---|---|
[Spring Boot] 인코딩 및 암호화 알고리즘을 통해 비밀키 생성, 이를 사용해 Jwt의 헤더와 페이로드를 서명 (무결성 보장) (0) | 2023.09.27 |
[Spring Boot] Pageable 인터페이스와 페이징(Paging) 처리 (0) | 2023.06.04 |
[Spring Boot] 설정정보(개발용, 배포용, 테스트용) (0) | 2023.01.12 |
[Spring Boot] 개발용 샘플데이터 생성 (URL 이미지 포함) (0) | 2023.01.12 |
Comments