웹 개발(정적 컨텐츠, MVC&템플릿 엔진, API)
3가지 방법
정적 컨텐츠
MVC와 템플릿 엔진 : html로 내리냐
API : data로 내리냐 - json이라는 데이터 형식으로 클라이언트에게 데이터를 전달. - 서버끼리 통신할 때.
스프링부트에서 정적컨텐츠 동작 방법
localhost:8080/hello-static.html 접속 시 스프링부트에서는 hello-static 관련 컨트롤러부터 먼저 찾아본다.
1에서 컨트롤러가 없으면 static 폴더 하위에 hello-static.html 을 찾아서 이를 반환한다.
스프링부트에서 MVC와 템플릿 엔진 동작 방법 템플릿 엔진을 모델 뷰 컨트롤러 방식으로 쪼개서 뷰를 템플릿 엔진을 통해 html을 동적으로 변환한 후 렌더링 된 페이지를 클라이언트에게 전달한다. 뷰를 찾아서 템플릿엔진을 통해 변환된 화면을 렌더링해서 웹브라우저에 넘겨준다.
MVC : Model, View, Controller 흔히 프로그래밍을 할 때, 역할을 분리해야한다는 말을 많이 들어봤을 것이다. View는 화면에 그리는 용도, Model과 Controller는 서버 뒷단, 비즈니스 로직, 내부처리 등과 관련되있어야 한다. 그래서 과거에는 Model과 Controller가 합쳐져있었지만 현재에는 분리된 것이 이러한 이유 때문이다.
Thymeleaf 템플릿 엔진의 장점 서버 없이 그 파일의 경로로 접속해서 내용을 볼 수 있다!
템플릿 엔진에서 변환한 HTML을 웹 브라우저에 넘긴다!
아래 코드는 정적 페이지와 mvc로 컨트롤러를 구현한 것이다. - 정적페이지 : 단순히 "hello"를 리턴한다. 그러면 템플릿에서 hello.html을 찾아서 렌더링한다. - mvc : url에서 값을 파라미터로 바꾼다. Model을 매개변수로 담으면 이를 뷰에서 렌더링할 때 쓴다! =>파라미터 요구 : @RequestParam("name"), Model : "name"이라는 이름으로 값을 전달한다! 그리고 hello-template을 찾아서 렌더링한다. 공통점 : 템플릿에서 리턴 뒤의 것에 해당하는 html을 렌더링한다!
스프링부트에서 API 방식 : 데이터를 그 자체 그대로 내린다!
ResponseBody - viewResolver가 동작했지만 이번에는 HttpMessageConverter 가 동작한다! - HTTP의 BODY에 문자 내용을 직접 반환한다. - 기본 문자 처리 : StringHttpMessageConverter - 기본 객체 처리 : MappingJackson2HttpMessageConverter - byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어있다.
HttpMessageConverter로 원하는 형식으로 바꿔서 쓸 수 있지만 현업에서는 거의 바꾸지 않고 그냥 사용한다고 한다.
hello-api : 객체 반환 hello-api 페이지로 접속, Response-Body하면, 리턴 형식이 문자가 아니라 객체다! 객체이면 JsonConverter로 json 방식으로 데이터를 반환한다!(디폴트) 객체를 생성할 때 cmd + N : getter와 setter를 만든다( java bin 규약) 아래 사진은 json 방식(키,value로 이루어진쌍) 으로 렌더링된 화면이다!
2. hello-string : 문자 반환
Last updated