정적 컨텐츠
- 정적 컨텐츠 : 클라이언트의 요청을 받고 서버에서 하는 것 없이 html 파일 그대로 보여주는 것.
- 정적 파일이 그대로 웹 브라우저에게 내려주는 방식으로 프로그래밍 할 수 없다.
MVC와 템플릿 엔진
- 템플릿 엔진 : JSP, PHP와 같은 것들로 html을 그대로 보여주는 것이 아닌 서버에서 프로그래밍을 해서 동적으로 변경해서 보여주는 것.
- 템플릿 엔진을 사용하기 위해서 MVC (Model - View - Controller) 방식으로 쪼개서 View를 템플릿 엔진으로 프로그래밍한 것으로 렌더링해서 렌더링이 된 html을 웹 브라우저에게 내려준다.
- 서버에서 html을 동적으로 변형을 해서 웹 브라우저에게 전달하는 방식이다.
- Model1 방식 : 예전 방식으로 Controller, View를 따로 나누지 않고 View 안에 JSP로 모든 것을 작성했다.
- MVC 방식 : Model - View - Controller로 책임과 역할을 분담하는 방식.
- Model - 화면에서 필요한 것들을 Controller에게 전달 받아서 View로 넘겨주는 역할
- View - 화면을 구성하는 역할
- Controller - 비지니스 로직과 관련이 있거나, 내부적으로 서버와 관련된 것을 처리하는 역할
- 각 역할에 맞는 일에만 집중을 해야한다.
- Thymleaf의 장점
- html을 작성하고 서버 없이 파일을 열어서 화면 구성을 볼 수 있다.
- 동적으로 html을 화면에 보여줄 수 있다.
- HTTP Get 방식에서 URL ?를 통해 파라미터를 넘겨줄 수 있다.
API
- API : JSON 포맷으로 클라이언트에게 데이터를 전달하는 방식
- View 없이 HTTP Response에 객체(JSON)를 넣어서 내려주는 방식이다.
- JSON : KEY - VALUE 쌍으로 이루어진 구조
- {키 : 값} 형태
- 템플릿 엔진 방식 vs API 방식
- 템플릿 엔진 방식: View를 찾아서 템플릿 엔진을 통해서 화면을 렌더링 해서 html을 웹 브라우저에 넘겨주는 방식이다.
- View라는 템플릿이 있는 상황에서 조작해서 보내주는 방식
- API 방식: 데이터를 그대로 내려주는 방식이다.
- 템플릿 엔진 방식: View를 찾아서 템플릿 엔진을 통해서 화면을 렌더링 해서 html을 웹 브라우저에 넘겨주는 방식이다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
- API 방식의 예제
- @ResponseBody : HTTP의 BODY에 해당 내용을 직접 반환한다는 의미이다.
- ViewResolver 대신에 HttpMessageConverter가 동작한다.
- 기본 문자 처리의 경우 StringHttpMessageConverter가 동작한다.
- 기본 객체 처리의 경우 MappingJackson2HttpMessageConverter 가 동작한다.
- ViewResolver 대신에 HttpMessageConverter가 동작한다.
- ex) URL을 localhost:8080/hello-string?name=spring!! 입력 시 hello spring!!만 화면에 출력된다.
- API는 별도의 html을 보여주는 것이 아닌 데이터를 그대로 내려준다.
- Spring에서 API 방식으로 객체를 반환하면 JSON 포맷으로 반환한다.
- 문자의 경우에는 값 그대로 내려준다.
- 자바빈(JavaBean) 규약에는 여러 가지 규칙들이 있다.
- 멤버 변수는 Private으로 선언하며 멤버 변수에 접근하기 위해서 Getter, Setter 메소드가 있어야한다.
출처: [인프런 김영한 스프링 입문]
[지금 무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 | 김영한 - 인프
김영한 | 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확
www.inflearn.com
'Spring > [인프런 김영한 스프링 입문]' 카테고리의 다른 글
[인프런 김영한 스프링 입문] 스프링 DB 접근 기술 (0) | 2024.08.09 |
---|---|
[인프런 김영한 스프링 입문] 회원 관리 예제 - 웹 MVC 개발 (1) | 2024.08.09 |
[인프런 김영한 스프링 입문] 스프링 빈과 의존관계 (0) | 2024.08.09 |
[인프런 김영한 스프링 입문] 회원 관리 예제 - 백엔드 개발 (0) | 2024.08.09 |
[인프런 김영한 스프링 입문] 프로젝트 환경설정 (0) | 2024.08.08 |