출처
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한 강사님
welcome page와 같이 서버에서 뭐 하는 것 없이 서버에서 바로 파일을 내려주는 것
스프링 부트 정적 콘텐츠 기능
hello-static.html이라는 요청이 오면 컨트롤러에서 찾아보고 없으면 resources 하위의 static 폴더를 뒤져서 가져다 줌
가장 많이 하는 패턴
jsp, php와 같은 친구들을 템플릿 엔진이라고 이야기 함
서버에서 변형을 해서 내려주는 방식
controller
view
model
2022-02-17 00:26:07.794 ERROR 5196 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-6] Exception processing template "hello-template": Error resolving template [hello-template], template might not exist or might not be accessible by any of the configured Template Resolvers
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello-template], template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.14.RELEASE.jar:3.0.14.RELEASE]
hello-template.html 파일을 생성 후에 controller 단에서 hello-mvc 주소 들어오는 것 확인 후 일로 넘기려고 했는데 계속!!! 위치를 못 찾아서 화가 났었는데 생각해보니.. html 위치를 template 하위가 아닌 resource 하위에 넣어 두니 생긴 일이었다. 잘 이해하고 만들자;;
json
을 통해서 데이터를 전달해주는 방식
vue와 react를 사용 할 때도 API로 데이터를 내려줄 때도 API 방식을 사용한다고 이야기 함
서버끼리 통신 할 때
@ResponseBody
: http의 body에 데이터를 직접 넣어주겠다는 의미
위에서 정적 컨텐츠, mvc에서와는 다르게 뷰 리졸버가 반응하는 것이 아니라 HttpMessageConverter
가 동작한다.
리턴형이 String이면 StringHttpMessageConverter
가 동작하고
리턴형이 객체라면 MappingJackson2HttpMessageConverter
가 동작하여 Json 형태로 리턴한다.
Jackson
이라는 라이브러리를 통해 json으로 변형해준다. 비슷한 라이브러리로는 구글에서 만든 Gson
이 있음. 우선 스프링은 기본적으로 Jackson
을 사용한다..
클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입을 비교해서 HttpMessageConverter
가 스프링에 의해서 선택된다! 그냥 이건 그렇게 된다!라고 지금 이해하고 넘어가자..
이건 boot라기 보다는 그냥 기초인데 여튼 정리가 되기 시작한다........ (세뇌)