스프링 웹 개발에는 크게 3가지가 있다.
1. 정적컨텐츠
2. MVC와 템플릿엔진
3. API
1. 정적컨텐츠
- 서버에서 html파일을 그.대.로. 웹브라우저에 내려주는것이다.
- 웹에서 로컬호스트 주소를 치면 -> 내장 톰캣서버가 먼저 요청을 받고 스프링에게 던짐 -> 스프링컨테이너 안에서 hello-static관련컨트롤러를 찾고 없으니까 -> resources안의 hello-static.html파일을 찾고 웹에 반환해준다!!
2. MVC와 템플릿엔진
- 서버에서 html파일을 변.형.해.서. 웹브라우저에 내려주는것이다.
- 웹에서 로컬호스트 주소를 치면 -> 내장 톰캣서버가 먼저 요청을 받고 스프링에게 던짐-> 스프링컨테이너 안에서 관련컨트롤러를 찾았어! HelloController의 메서드에 매핑이 되어있네! -> 매핑된 메서드를 호출해줌 -> 뷰리졸버가 리턴값(hello-template)과 똑같은 html을 찾아서 타임리프템플릿엔진한테 처리해주세요! 하면서 넘김 -> 타임리프템플릿엔진은 렌더링을 해서 html을 변환함 -> 웹에 반환!!
(*뷰리졸버 : view를 찾아주고 템플릿엔진연결시켜줌)
3. API
- JSON이라는 데이터구조포맷을 그.대.로. 클라이언트에게 전달해주는것이다. (뷰 안쓰는것)
- 웹에서 로컬호스트 주소를 치면 -> 내장 톰캣서버가 먼저 요청을 받고 스프링에게 던짐-> 스프링컨테이너 안에서 관련컨트롤러를 찾았어! @ResponseBody가 있네!-> 그럼 뷰리졸버대신 http의 Body에 직접반환해줘야겠다 -> HttpMessageConverter가 동작! -> (문자면)StringConverter가 문자그대로 웹에 반환! / (객체면)JsonConverter가 JSON형식으로 웹에 반환!!
(*JSON : JavaScript Object Notation. 속성-값 으로 이루어진 데이터오브젝트들을 전달하기위해 텍스트를 사용하는 개방형표준포맷. 인터넷으로 자료를 주고받을때 그 자료를 표현하는 방법.)
사실 정적컨텐츠를 제외하면,
1) 뷰를 찾아가지고 템플릿엔진을 통해서 화면을 렌더링해서 html을 웹브라우저에 넘겨주는방식,
2) API를 쓰는 방식
그냥 편하게 2가지라고 생각하면된다!!!!
[출처] 인프런 - 김영한 스프링 입문
'Back-end > Spring' 카테고리의 다른 글
[Springboot] 카멜케이스로 코드를 작성했는데 스네이크케이스로 요청이 온다면? (@JsonProperty, @JsonNaming) (0) | 2024.07.12 |
---|---|
[Springboot] RestTemplate을 사용한 MSA 프로젝트 만들기 (서버간 통신, JPA, H2 DB, Scheduler, FileIO) (0) | 2024.07.06 |
[JAVA/Springboot] open API 사용법(공공데이터) (1) | 2024.04.03 |
매번 헷갈리는 스프링 MVC 전체 구조 파악하기 (1장 손정리) (0) | 2024.02.04 |
[Spring] 스프링을 구동하면 일어나는 일 / 생성자 주입을 사용해야 하는 이유 (스프링 빈 라이프사이클) (0) | 2023.11.17 |