출처: 인프런 김영한님 스프링 웹 MVC 1편
스프링에서 응답 데이터를 만드는 방법은 크게 3가지이다.
1. 정적 리소스
예) 웹 브라우저에 정적인 HTML, css, js을 직접 제공할 때 사용
- 스프링 부트의 경우, 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공
/static , /public , /resources , /META-INF/resources
src/main/resources 는 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다.
따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스를 제공한다.
정적 리소스 경로
src/main/resources/static
다음 경로에 파일이 들어있으면
src/main/resources/static/basic/my-form.html
웹 브라우저에서 다음과 같이 실행하면 된다.
http://localhost:8080/basic/my-form.html
정적 리소스는 해당 파일을 변경 없이 그대로 서비스한다.
2. 뷰 템플릿 사용
예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다.
- 스프링 부트의 경우, 타임리프 템플릿 엔진을 사용하여 뷰 템플릿을 작성할 수 있다.
3. HTTP 메시지 사용
- HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에
JSON 등의 형식으로 데이터를 실어 보낸다.
- 요즘 가장 많이 사용하는 방식
추가로..
PRG 패턴
- HTTP API를 사용하지 않는 경우에, PRG 패턴을 많이 사용한다.
- PRG 패턴이란 Post/Redirect/Get 패턴으로, Post 요청 이후 새로고침 시 같은 Post 요청이 또 반복해서 일어나는 문제를 보완하기 위한 패턴이다.
- 따라서 Post 요청을 처리한 후 Redirect를 통해 다른 페이지를 Get하여 화면에 보여준다.
- 이 패턴을 많이 사용한다고 강사님께서 말씀해주셨는데 토이 프로젝트를 하면서 쓴 적이 없고 또 생소했기 때문에 더 찾아보았다. 그 결과 HTTP API를 사용하지 않는 경우에 많이 사용한다고 결론지을 수 있었다.
- 요즘 REST API로 개발이 많이 이루어지기 때문에, 이렇게 API 통신을 할 경우엔 PRG 패턴이 필요하지 않다.