Spring

[Spring] 스프링 웹 개발 기초(정적 컨텐츠, MVC와 템플릿 엔진, API)

SoU330 2024. 12. 24. 03:38

 

 

웹 브라우저에서 받은 요청을 스프링에서 처리할 때,

1. 정적 컨텐츠로 반환

2. MVC와 템플릿 엔진을 이용하여 반환

3. API를 이용하여 반환하는 방법

이 있다.

 

 

 

정적 컨텐츠

정적 컨텐츠란 서버에서 별도의 처리 없이 있는 그대로 클라이언트(브라우저)로 전달되는 파일들이다.

 

폴더 구조를 보면 resources 폴더 아래 static 폴더가 있다.

여기에 html 파일을 넣어두기만 하면

 

http://localhost:8080/hello-static.html

라고 쳤을 때 해당 파일이 보인다.

 

 

Spring에서는 웹 브라우저에서 요청이 왔을 때 

우선 컨트롤러에서 찾아보고, 없으면

static 폴더에 있는 컨텐츠를 보여주는 것이다.

 

 

 

 

 

 

 

 

 

 

MVC와 템플릿 엔진

MVC구조란 Model, View, Controller 로 역할이 나누어진 구조이다.

 

@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "name") String name, Model model) {
    model.addAttribute("name",name);
    return "hello-template";
}

컨트롤러 파일에 코드가 이렇게 있을 때, hello-mvc로 들어오는 요청을 처리한다.

주의할 점은 파라미터를 포함하고 있다. name값을 함께 넘겨줘야 하는 것이다. (false로 꼭 넣지 않아도 되게 할 수는 있음)

 

http://localhost:8080/hello-mvc?name=spring!!!!!

이렇게 하면 name값에 spring!!!!!이라는 값을 넣을 수 있다.

 

 

templates/ 폴더 안에 hello-template.html이 있으면 

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

이렇게 되어 있으면 여기에 name에 spring!!!!! 이 들어간다.

 

스프링에서는 이 템플릿을 변환 후에 브라우저로 넘겨주기 때문에

<html>
<body>
<p>hello spring!!!!!</p>
</body>
</html>

브라우저에는 이런 코드가 들어가게 된다.

 

 

 

 

API

보통 api 방식을 이용하여 값을 JSON 형식으로 만들어 반환한다.

 

@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
    return "hello " + name;
}

이렇게 반환하게 되면 브라우저에는 그냥 hello ___ 라고만 뜬다.

여기서 ResponseBody 어노테이션은 http body에 데이터를 직접 넣겠다는 뜻이다.

 

@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
    Hello hello = new Hello();
    hello.setName(name);
    return hello;
}

보면 이 함수는 객체를 return 한다.

스프링 부트에서는 HttpMessageConverter가 객체를 JSON 형식으로 반환해준다.

 

그래서 이 요청을 브라우저에서 확인해보면

 

이렇게 JSON 형식으로 뜨는 것을 확인할 수 있다.

 

 

'Spring' 카테고리의 다른 글

[Spring] 주요 어노테이션 기능 정리  (1) 2025.01.16
[Spring] 프로젝트 시작하기 (IntelliJ)  (0) 2024.12.22