작심 365

[스프링 입문 강의 정리] sec2. 스프링 웹 개발 기초 본문

Back-End/Spring

[스프링 입문 강의 정리] sec2. 스프링 웹 개발 기초

eunKyung KIM 2023. 11. 7. 17:08

정적 컨텐츠란

원래 파일 그 자체를 그대로 보여주는 것.

동적인 데이터가 없는 html 페이지. 동적인 데이터가 없기 때문에 항상 같은 내용만 보여주게 된다. 

 

/resources/static/

스프링 부트는 정적 컨텐츠를 해당 경로밑에서 찾는다. 

 

정적 html 페이지 예시

static 폴더 밑에 html 파일 생성.

 

 

정적 페이지 요청

url 에 파일명 그대로 입력한다. 

 

 

 


MVC와 템플릿 엔진

MVC 는 Model, View, Controller 역할로 코드를 분리하는 것을 말한다.

 

View 는 사용자에게 보여지는 화면을 나타낸다. 템플릿 엔진이 여기에 해당한다. 

참고로 View는 Model 에만 의존을 해야되고, Controller에는 의존하면 안된다. 

(-> View 내부에 Model 관련 코드만 허용한다.)

 

HelloController.java

 

hello-template.html

 

실행 결과

 

웹 브라우저에서 localhost:8080/hello-mvc 주소를 입력하면 스프링 내장 톰켓 서버를 먼저 거치게 되고, 스프링에서는 controller 에 정의되어있는 주소중에서 일치하는 주소를 가진 메서드를 찾아서 해당 메서드를 호출한다.

해당 메서드는 파라미터 값으로 @RequestParam을 갖고 있다. 

 

@RequestParam 은 url 에서 파라미터 값과 이름을 전달하는 방식이다. 따라서 name 이라는 이름에 spring 이라는 값을 넣어서 서버로 전달하면 Model 객체를 통해서 템플릿 엔진에 데이터가 전달된다. 

마지막으로 viewResolver 가 hello-template 이라는 이름을 가진 템플릿 엔진을 찾아서 클라이언트에 넘겨준다. 

 

 


API

rest api 를 사용해서 데이터를 전달하는 방법. 보통 클라이언트 사이드 렌더링을 할때 사용한다.

서버에서는 react, vue 등등 에게 데이터 자체만 보내주면 된다.

 

HelloController.java
실행 결과

 

@ResponseBody 

@ResponseBody annotation을 써주면 http body에 데이터를 직접 반환해준다.

해당 annotation을 쓰지 않았을 때는 viewResolver가 동작을 해서 뷰 템플릿을 찾아서 넘겨줬다면

이번에는 viewResolver 대신 HttpMessageConverter 가 동작한다. 

HttpMessageConverter는 전달하려는 값이 문자열인지 객체인지 판단 후 각각에 맞게 데이터를 넘겨준다.

즉 예시 코드처럼 문자열을 줄수도 있고 객체를 전달 할 수 도 있다. 객체의 경우는 json 형태로 전달된다. 

 

(템플릿 엔진을 내려주었을때는 html 페이지를 만들어 주었는데 이제는 그럴 필요가 없다. )

 

 

 

객체 예제

 

 

Comments