웹을 개발하는 방법은 크게 3가지가 있습니다.
1) 정적 컨텐츠
- 그냥 서버에서 하는 것 없이 파일을 그대로 보내주는 방식
2) MVC와 템플릿 엔진
- Model, View, Controller 역할을 나누어서 처리하는 방식
- 정정 컨텐츠와 차이: MVC와 템플릿엔진은 Controller, Model, View를 사용하여 조작된 내용을 반환
- 비교: model1 방식에서는 구성요소인 JSP가 Controller와 View역할을, Java Bean이 Model 역할을 담당 참고
3) API
- JSON같은 데이터 포멧으로 클라이언트에 데이터를 보내주는 방식
위 3가지 방식을 동작방식과 함께 좀 더 알아보겠습니다.
정적 컨텐츠
- Spring 프로젝트 내의 static 경로에 정적 파일을 작성하게 되면 올린 파일 그대로 반환받을 수 있다.
- 동작 방식
- 웹 브라우저에서 static 파일을 요청하면 (localhost:8080/hello-static.html) 스프링 내장 톰켓 서버에서 관련 컨트롤러가 있는지 찾아보고, 없으면 리소스의 정적파이에서 찾아서 반환한다.
MVC와 템플릿 엔진
- MVC: Model, View, Controller
- Controller: 로직과 관련된 부분을 담당
- View: 화면과 관련된 부분을 담당
- Model: 전달하는 데이터를 담당
- 동작 방식
- 웹브라우저에서 http://localhost:8080/hello-mvc?name=원하는 내용 을 요청하면 Controller에서 hello-mvc를 찾아 hello-template에 model(name:spring) viewResoler로 전달
- Thymeleaf 템플릿 엔진 처리하여 HTML로 반환
- 특징: 화면에 원하는 데이터를 렌더링하여 전달
API
- 동작방식
- @ResponseBody를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter가 동작
- JsonConverter -> 객체를 Json 형식으로 반환
- 기본 객체처리: MappingJacksonMessageConverter
- StringConverter -> 문자를 문자 그대로 반환
- 기본 문자처리: StringHttpMessageConverter
- 차이점: view 없이 바로 HTTP에 데이터를 실어서 전달
이 글은 김영한 님의 스프링 입문 강의를 복습하기 위해 작성된 글 입니다.
'Dev > Spring' 카테고리의 다른 글
[spring-introduction] 스프링 빈과 의존관계 (1) | 2022.10.07 |
---|---|
[spring-introduction] 회원 관리 예제로 백엔드 개발 및 테스트 해보기 (0) | 2022.10.03 |
[spring-introduction] 빌드하고 실행하기 (0) | 2022.09.30 |
[spring-introduction] view 환경설정 (0) | 2022.09.30 |
[spring-introduction] 라이브러리 살펴보기 (1) | 2022.09.30 |