티스토리 뷰

반응형

(참고 : Spring Boot와 Thymeleaf 기준을 작성된 글입니다)

 

이전 글(HTTP Request Data)에서 클라이언트가 보낸 요청 값들을 서버 쪽에서 어떻게 조회할 수 있는지 살펴보았다

이렇게 값들을 조회한 후에는 서버쪽에서 해당 로직들을 수행하고 클라이언트에게 응답을 하게 된다

이때 서버쪽에서 어떠한 응답을 어떻게 만드는지 살펴보려고 한다

 

우선 서버쪽에서 만드는 응답 데이터는 정적 리소스 , 뷰 템플릿, HTTP 메시지와 같이 크게 3가지로 나뉜다

 

Static Resource(정적 리소스)

웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때 정적 리소스를 사용한다

스프링 부트의 경우 정적 리소스 경로가 설정되어 있는데

src/main/resources/static 경로에 index.html 파일을 생성하고

http://localhost:8080/index.html와 같이 접근하게 되면

해당 파일의 변경 없이 그대로 서비스 된다

 

View Template(뷰 템플릿)

웹 브라우저에 동적인 HTML을 제공할 때 뷰 템플릿을 사용한다

정적 리소스와 같이 스프링 부트는 기본 뷰 템플릿 경로를 제공한다 (src/main/resource/templates)

해당 경로에 뷰 템플릿을 생성하고 @Controller에서 String을 반환하게 되면 해당 이름을 가지고 있는 뷰 템플릿을

뷰 리졸버가 찾아 동적 HTML을 생성하여 클라이언트에게 응답되는 방식이다

//@Controller

@RequestMapping("/example")
public String responseView() {
	return "view";
}

 

HTTP 메시지

HTTP API를 제공하는 경우 HTML이 아닌 데이터를 전달해야 하기 때문에 HTTP Body에 JSON과 같은 형식으로 데이터를 담아 보낸다

클래스를 @RestController로 붙이거나 메서드에 @ResponseBody를 붙이게 되면 뷰 리졸버가 작동하지 않고 메시지 컨버터가 작동하여

반환 값을 데이터 형식으로 반환하게 된다 (메시지 컨버터의 글)

//@RestController가 있다면 @ResponseBody 생략 가능

//username = kim

public String responseBody(@RequestParam String username) {
	return pageNum;
}

// kim 문자열이 반환된다

 

핵심정리

클라이언트의 요청을 수행하고 응답하는 방법은 크게 3가지로 나뉜다

• 정적 리소스 : 파일의 변경 없이 정적으로 생성된 HTML, CSS, JS가 응답된다

• 뷰 템플릿 : 뷰 리졸버를 통하여 만들어진 뷰 템플릿으로 동적 HTML을 생성하여 응답한다

• HTTP 메시지 : @RestController , @ResponseBody를 통해 메시지 컨버터가 작동하여 해당 데이터 그 자체가 반환된다

 

 

더보기

개인 학습을 위해 작성되는 글입니다.

제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.

 

참조 링크:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

반응형
댓글