정적 컨텐츠와 동적 컨텐츠
스프링을 통해 개발할때 정적 컨텐츠와 동적 컨텐츠가 있다
1. 정적 컨텐츠 개념
정적 컨텐츠는 HTML을 통해 스프링을 이용하지 않고 직접 HTML을 있는 그대로 반환해주는것이다.
1-1. 정적 페이지 작동 방식
1. 웹브라우저에서 URL에 접속한다. localhost:8080/hello-static.html
2-1. 내장 톰캣 서버가 요청을 받아서 스프링으로 hello-static관련 컨트롤러를 체크한다.
2-2. 컨트롤러가 없을때 resources 패키지에서 static/hello-static.html을 찾고 웹브라우저에게 Response해준다.
2. 동적 컨텐츠
개발자는 관심사를 분리해야한다(역할과 책임)
동적 컨텐츠는 크게 MVC를 이용한 방법과 API방법이 있다. 정적페이지와 다르게 동적으로 작동하여 유연하게 결과물을 조정할 수 있다.
2--1 MVC 방식 개념
MVC는 Model, View, Controller의 약자로 이루어져 있다.
Model
1.데이터를 처리하는 영역
2. key와 Value로 이루어져 있음
View
1.사용자에게 알맞은 화면을 보여주는 역할
2.데이터를 시각적으로 보여주는 역할
Controller
1.Model과 View를 연결 시켜주는 매개체
2.사용자가 View(GUI)를 통해 입력을 하면 Model(데이터)을 변경해주는역할
2-1 MVC작동방식
1. 서버에 요청이 들어오면 스프링에서 hello-static관련 컨트롤러를 찾는다.
2. 컨트롤러를 찾으면 같은 Mapping이 있는 메서드를 실행한다. 이때 Model을 같이 이용한다
3. return 값으로 View와 연결해야하는데 같은 이름의 html등 파일을 알려준다.
4. template패키지에 같은 이름이 있는 html으로 데이터를 전송해서 동적으로 페이지를 관리한다.
2-2 API 방식 개념
API는 MVC와 다르게 model과 View를 통하지않고 직접적으로 데이터를 바로 활용할 수 있다.
http 프로토콜에서 헤더와 바디부분에서 바디부분에 직접 데이터를 준다는 의미
*@ResponseBody 라는 어노테이션을 따로 추가해줘야한다.
2-2 API 작동 방식
1. 서버에 요청이 들어오면 스프링에서 hello-string관련 컨트롤러를 찾는다.
2. URL로 "localhost:8080/hello-string?name=spring!!!" 을 접속하면 ?는 Get방식이고 name에 spring값이 저장된다
3. ? 뒤에 들어오는 값을 바로 화면에 View 필요없이(html파일) 결과값을 보여준다.
객체로 반환하기
객체로 반활할때 는 내부객체로 만들어서 반환해야하고 값은 JSON 표준으로 나타난다.