2022. 2. 16. 22:47ㆍSpring 기초
1. 정적컨텐츠
정적 컨텐츠는 서버에서 가공하지 않은 파일을 사용자에게 그대로 보내주는 방식
2. MVC와 템플릿 엔진
서버에서 프로그래밍을 통해 HTML을 동적으로 변경하여 사용자에게 전송하는 방식. 이를 위해 Model – View – Controller로 관심사를 나눈다.
Controller는 내부 동작을 처리하며, Model은 데이터를 담아 controller에 전달해주는 역할을, View는 사용자에게 보여지는 부분을 담당한다(화면 출력). Model은 분리된 코드를 연결하는 역할(데이터 저장 및 전송)을 수행한다.
클라이언트로부터 입력 받은 데이터는 Model에 저장되어 Controller로 전달된다. Controller는 작업 결과를 Model에 저장하며 이 Model은 출력 파트(View)로 전송된다.
ViewResolver는 해당하는 이름의 view 파일을 찾아 템플릿 엔진에 연결한다. View 파일에서는 thymeleaf 템플릿 엔진이 Model의 데이터를 꺼내 ${name}에 해당하는 값으로 치환되어 출력된다.
<html xmlns:th="http://www.thymeleaf.org"> 타임리프 사용 선언
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
3. API
@ResponseBody 어노테이션을 부착하면, http의 body에 해당 데이터의 리턴 값을 직접 반환한다는 의미이다. View의 역할 없이 작성한 문자열이 그대로 출력된다.
MVC에서는 ViewResolver가 동작했다면, 여기서는 HttpMessageConverter가 동작한다.
리턴 값이 객체면 JsonConverter가, 문자면 StringConverter가 동작한다. (객체 배열은 전자, String[]은 후자가 처리함)
아래 response header를 비교해서 보자.
@ResponseBody는 첫번째 이미지와 달리 html 태그없이 그대로 데이터를 출력한다.
'Spring 기초' 카테고리의 다른 글
Spring JDBC Template (0) | 2022.02.25 |
---|---|
Spring 통합 테스트 (0) | 2022.02.25 |
Cookie & Session (0) | 2022.02.09 |
DataBinder(아주 간략) (0) | 2022.02.06 |
@ModelAttribute, @RequestParam (0) | 2022.02.06 |