[SpringBoot] 웹개발 3가지 방식과 동작원리
- Language/Spring
- 2021. 11. 22.
웹 개발 방식 3가지
웹을 개발하는것은 크게 3가지 방법이 있다. 첫번째로는 정적 컨텐츠가 있는데 이것은 정적 파일을 웹 브라우저에 그대로 내려주는 것이고, 두번째로는 MVC와 템플릿 엔진이 있는데 템플릿 엔진은 PHP, JSP 등 html을 서버에서 처리를 한 후 웹 브라우저에 내려주는 것이다. 그리고 API는 html을 내려주는 것이 아니라 json, xml 형식의 데이터 구조 포맷을 클라이언트 에게 내려주고 화면은 클라이언트 에서 그린다. 대표적으로 React, Vue 가 있다. 그리고 서버끼리 통신할때 데이터만 주고 받으면 되니 API 방식을 사용한다.
1. 정적 컨텐츠
간략하게 돌아가는 원리는 localhost:8080/hello-static-html을 url에 치면 내장 톰캣서버에서 먼저 스프링 컨테이너에서 hello-static 관련 컨트롤러가 있는지 확인하고 없으면 resources 아래에 있는 /static/hello-static.html을 찾는다. (API문서를 보면 /static말고도 /public, /resources, /META-INF/resources 도 포함된다) 찾아서 있으면 반환한다.
2. MVC와 템플릿 엔진
템플릿 엔진으로 타임리프를 썼는데 타임리프의 장점은 html을 서버없이 그냥 열어봐도 소스 그대로 볼수있다. 작동원리로 url을 넘기면 내장톰캣 서버를 거치고 컨테이너에서 "hello-mvc" 컨트롤러가 있는지 확인 후 메서드 호출이 되고 모델(name:"파라미터값")과 "hello-template"를 return 한다. 그리고 그걸 Spring에게 넘겨주고 viewResolver(뷰를 찾아주고 템플릿 엔진과 연결)에서 hello-template와 동일한 html을 찾아서 Thymeleaf한테 처리해달라고 하고 html로 변환후 넘긴다.
3. API
아래 메서드가 2개 있는데 첫번째는 문자열 그대로를 반환하는 것이고, 2번째는 JSON방식으로 반환하는 것이다. 그 이유는 @ResponseBody 때문인데 문자열은 그대로 return 하지만 객체는 기본적으로 JSON방식으로 return 한다.
hello-api 컨트롤러가 있는지 확인하였는데 @ResponseBody가 있으면 HttpMessageConverter가 동작하는데 단순 문자열이면 StringConverter가 동작하고 객체면은 JsonConverter가 동작한다.
'Language > Spring' 카테고리의 다른 글
[SpringBoot] IntelliJ 에서 스프링부트 DevTools 사용법과 실행원리 (0) | 2021.12.01 |
---|---|
[SpringBoot] 기능구현한 코드를 코드로 테스트 하는방법및 주의사항 (0) | 2021.11.23 |
[SpringBoot] 스프링부트 Gradle 프로젝트 빌드하고(jar파일 생성) 실행하는법 (0) | 2021.11.11 |
[Spring] 스프링 부트의 라이브러리 의존관계와 View 환경 (0) | 2021.11.10 |
[Spring]스프링 부트 사이트를 이용해 스프링 프로젝트(Gradle) 생성하는법, IntelliJ 셋팅 방법 (0) | 2021.11.08 |