2022. 2. 20. 17:00ㆍ[SpringBoot]_/[Spring-boot]_인프런 강의
Web Application 에서 기본적으로 Model, View, Controller 의 MVC 구조를 많이 사용한다.
이는 Spring에서 controller 부분에서 핸들링이 가능하다.
대표적으로 3가지를 사용하게 되는데 다음과 같다.
1] 정적 콘텐츠 제공
static 아래의 파일을 제공 -> 정적인 콘텐츠를 제공
url 부분에 html 부분까지 넣어서 전달하게 되면 해당 html 파일 전체가 제공된다.
static 아래의 해당 파일을 만든다.
주소 검색란에 해당 파일의 html을 전달한다.
spirng 동작원리]
1. 해당 heloo-static.html 요청
2. 내장톰켓이 받아서 이를 spring에 전달
3. 스프링에서 해당 controller 를 찾는다
4. 해당 정적컨텐츠는 컨트롤러가 없기 때문에 바로 해당 파일을 제공
2] 렌더링이 된 html 파일을 제공 = template 엔진방식
위의 컨트롤러는 hello-template를 리턴하게 된다.
위의 정적과 다른 동작원리]
1. 해당 hello-mvc 요청이 들어옴
2. 내장톰켓이 spring 에서는 우선적으로 해당하는 컨트롤러를 찾음
3. 전달 컨트롤러가 있기 때문에 return 값인 hello-template를 리턴하고 model 안의 atttest 값에 전달받은 name의 값을 대입 해당 값을 대입하기 위해서는 url뒤에 ?를 이용하여 (HTTP 통신에서 GET 에 값을 전달하는 방식과 동일) 값을 넣어준다
4. spring의 viewResolver가 동작하여 HTML을 변환하고 변환된 HTML을 전달한다
위와같은 동작을 template 엔진방식이라고 한다.
3] API 통신
API 통신에는 2가지가 있다
기본 문자열통신 과 객체 통신
3-1] 기본 문자열 통신
ResponseBody 태그를 사용하게 되며 동작원리는 다음과 같다
1. GetMapping으로 해당하는 url 주소가 전달이 된다
2. 톰켓에서 spring 컨테이너에 전달 해당하는 컨트롤러가 있으니 반응
3. @ResponseBody 태그가 붙어있는것을 확인 [HTTP Boby 에 문자내용을 직접 반환]
4. viewResolver 대신에 HttpMessageConverter가 동작
5. return 하는 요소가 단순 문자열이면 stringconverter가 동작
6. 기본 문자열이 반환되서 보여진다.
결과]
3-2] Json 객체 반환 통신
위의 내용과 다른점은 return 값이 hello 라는 객체라는 점이다.
ResponseBody 태그를 사용하게 되며 동작원리는 다음과 같다.
1. GetMapping으로 해당하는 url 주소가 전달이 된다
2. 톰켓에서 spring 컨테이너에 전달 해당하는 컨트롤러가 있으니 반응
3. @ResponseBody 태그가 붙어있는것을 확인 [HTTP Boby 에 문자내용을 직접 반환]
4. viewResolver 대신에 HttpMessageConverter가 동작
5. return 하는 요소 객체이기 때문에 JsonConverter 가 동작
6. json 파일로 반환
결과]
spring 에서 controller로 통신하는 방법은 대표적으로 3가지가 있다. 여기서 변형 심화하여 사용하게 된다.
정적파일 전달은 컨트롤러가 없고
API통신의 경우 view가 없다
xml통신방법도 있지만 추세는 json통신을 주로 한다.
'[SpringBoot]_ > [Spring-boot]_인프런 강의' 카테고리의 다른 글
[Spring-boot]_6차 MVC 구조 만들기(feat.thymeleaf) (0) | 2022.03.12 |
---|---|
[Spring-boot]_5차 Service(feat.메모리 저장) (0) | 2022.03.05 |
[Spring-boot]_4차 MemoryRepository(feat.JUnit) (0) | 2022.03.05 |
[Spring-boot]_2차 Spring boot - view 환경설정 (0) | 2022.02.20 |
[Spring-boot]_1차 Spring boot - 환경설정 (0) | 2022.02.20 |