Replies: 1 comment
-
|
정리 상세히 잘해놓으셨네요 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
스프링 웹 개발을 들어가기 앞서 크게 정적 콘텐츠, 템플릿 엔진, API를 이해할 필요가 있다.
정적 콘텐츠
기본적으로 스프링부트는 정적인 콘텐츠(기본적인 html)를
resources/static아래에서 찾는다.관련 공식 문서
웹 브라우저에서 localhost:8080/hello-static.html 요청을 하면
내장된 톰캣 서버를 통해 스프링 컨테이너는 1. �Controller에서 해당 경로가 있는지 우선적으로 찾는다. 2. 없으면
resources/static아래에서 해당 html 파일을 찾는다.MVC 구조와 템플릿 엔진
resources/templates/hello-template.htmllocalhost:8080/hello-mvc로 요청을 하면 에러가 발생한다.
컨트롤러에서 해당 메소드의 파라미터를 살펴보면
@RequestParam으로 name을 받고 있다.cmd + p를 누르면 옵션을 확인할 수 있는데@RequestParam에 관한 옵션 중 boolean required()의 디폴트 값이 true인 것을 확인할 수 있다. 따라서 해당 옵션을 변경하지 않는 이상,localhost:8080/hello-mvc?name={name}으로 요청을 해야한다.localhost:8080/hello-mvc?name=spring!!!으로 요청을 하면 템플릿 엔진에 맞춰 렌더링 된 화면을 볼 수 있다. 쿼리스트링 값에 따라 hello 뒤의 문자는 바뀔 수 있다.웹 브라우저에서 해당 url로 요청을 하면 스프링 컨테이너는 컨트롤러에서 찾고, 해당 메서드가
String을 리턴 값으로 갖고 있기 때문에뷰 리졸버가resources/templates에서 뷰를 찾아준다. model에 담긴 name 값은 템플릿 엔진을 통해 렌더링 된다.API
@ResponseBody어노테이션을 사용하면 뷰 리졸버가 동작하지 않아 뷰를 찾는 게 아니라,HttpMessageConverter가 동작해 HTTP BODY에 문자 내용을 직접 반환한다.리턴 타입이
String이지만@ResponseBody어노테이션이 붙었기 때문에 뷰 리졸버는 동작하지 않고StringHttpMessageConverter를 통해 문자열이 그대로 반환된다.Hello라는 객체를 리턴 타입으로 갖고 있으며
@ResponseBody어노테이션이 붙은 경우MappingJackson2HttpMessageConverter에 따라json형태로 반환됨을 확인할 수 있다. 따로 설정하지 않으면 default로json이 반환되며 따로 요청이 있으면 xml 등 다른 형태로도 반환할 수 있다.Beta Was this translation helpful? Give feedback.
All reactions