작심 365
[스프링 입문 강의 정리] sec2. 스프링 웹 개발 기초 본문
정적 컨텐츠란
원래 파일 그 자체를 그대로 보여주는 것.
동적인 데이터가 없는 html 페이지. 동적인 데이터가 없기 때문에 항상 같은 내용만 보여주게 된다.
/resources/static/
스프링 부트는 정적 컨텐츠를 해당 경로밑에서 찾는다.
정적 html 페이지 예시
static 폴더 밑에 html 파일 생성.
정적 페이지 요청
url 에 파일명 그대로 입력한다.
MVC와 템플릿 엔진
MVC 는 Model, View, Controller 역할로 코드를 분리하는 것을 말한다.
View 는 사용자에게 보여지는 화면을 나타낸다. 템플릿 엔진이 여기에 해당한다.
참고로 View는 Model 에만 의존을 해야되고, Controller에는 의존하면 안된다.
(-> View 내부에 Model 관련 코드만 허용한다.)
웹 브라우저에서 localhost:8080/hello-mvc 주소를 입력하면 스프링 내장 톰켓 서버를 먼저 거치게 되고, 스프링에서는 controller 에 정의되어있는 주소중에서 일치하는 주소를 가진 메서드를 찾아서 해당 메서드를 호출한다.
해당 메서드는 파라미터 값으로 @RequestParam을 갖고 있다.
@RequestParam 은 url 에서 파라미터 값과 이름을 전달하는 방식이다. 따라서 name 이라는 이름에 spring 이라는 값을 넣어서 서버로 전달하면 Model 객체를 통해서 템플릿 엔진에 데이터가 전달된다.
마지막으로 viewResolver 가 hello-template 이라는 이름을 가진 템플릿 엔진을 찾아서 클라이언트에 넘겨준다.
API
rest api 를 사용해서 데이터를 전달하는 방법. 보통 클라이언트 사이드 렌더링을 할때 사용한다.
서버에서는 react, vue 등등 에게 데이터 자체만 보내주면 된다.
@ResponseBody
@ResponseBody annotation을 써주면 http body에 데이터를 직접 반환해준다.
해당 annotation을 쓰지 않았을 때는 viewResolver가 동작을 해서 뷰 템플릿을 찾아서 넘겨줬다면
이번에는 viewResolver 대신 HttpMessageConverter 가 동작한다.
HttpMessageConverter는 전달하려는 값이 문자열인지 객체인지 판단 후 각각에 맞게 데이터를 넘겨준다.
즉 예시 코드처럼 문자열을 줄수도 있고 객체를 전달 할 수 도 있다. 객체의 경우는 json 형태로 전달된다.
(템플릿 엔진을 내려주었을때는 html 페이지를 만들어 주었는데 이제는 그럴 필요가 없다. )
'Back-End > Spring' 카테고리의 다른 글
[Spring 개념 정리] Spring Filter (1) | 2025.01.15 |
---|---|
[Spring Security] Security 설정 후 일어나는 일 (2) | 2024.04.06 |
[스프링 입문 강의 정리] sec1. 프로젝트 환경 설정 (0) | 2023.10.18 |