728x90
정적컨텐츠
웹 브라우저에서 localhost:8080/hello-static.html이라는 요청이 들어오면 스프링부트에서 우선
1. 스프링 컨테이너에 hello-static 관련한 컨트롤러가 있는지 확인한다.
2. 없을 경우 resource 폴더 안에 있는 static/hello-static.html라는 정적 컨텐츠를 웹 브라우저에 띄운다.
MVC와 템플릿 엔진
🏷️ MVC: Model, View, Controller
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
RequestParam은 쿼리 파라미터로 name을 받아오는 것을 의미한다.
localhost:8080/hello-mvc?name=spring 으로 받아오면
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
hello-template.html에 name이 넘어가서 hello empty가 hello spring으로 치환되어 화면에 출력된다.
웹 브라우저에서 localhost:8080/hello-mvc라는 요청이 들어오면 스프링부트에서 우선
1. 스프링 컨테이너에 hello-mvc 관련한 컨트롤러가 있는지 확인한다.
2. 컨트롤러 내부의 helloMvc를 통해 name:spring을 담은 model을 hello-template에 전달한다.
3. String name과 똑같은 html파일을 찾아서 타임리프 템플릿 엔진에 처리해달라고 넘기면
4. 타임리프 템플릿 엔진이 렌더링해서 변환을 한 HTML을 웹 브라우저에 반환한다.
API
@ResponseBody
스프링 프레임워크에서 비동기 통신, 즉 API 통신을 구현하기 위해 @RequestBody와 @ResponseBody 어노테이션을 사용한다.
- 클라이언트 ➡️ 서버 요청 : @RequestBody
- 서버 ➡️ 클라이언트 응답 : @ResponseBody
@ResponseBody 문자 반환
- `@ResponseBody` 를 사용하면 뷰 리졸버(`viewResolver` )를 사용하지 않음
- 대신에 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님)
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello" + name;
}
위와 같은 코드를 컨트롤러에 작성했을 때, http://localhost:8080/hello-string?name=메롱 을 연결하면,
return 해주는 문자가 그대로 화면에 나타난다.
근데 문자를 화면에 바로 보여주는 경우는 거~의 안씀
@ResponseBody 객체 반환
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
}
@ResponseBody` 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다! (요즘은 대부분 JSON으로 반환한다)
@ResponseBody 사용원리
- @ResponseBody` 를 사용 HTTP의 BODY에 문자 내용을 직접 반환
- `viewResolver` 대신에 `HttpMessageConverter` 가 동작
- 기본 문자처리: `StringHttpMessageConverter`
- 기본 객체처리: `MappingJackson2HttpMessageConverter`(JSON)
- byte 처리 등등 기타 여러 HttpMessageConverter가 Spring에 기본으로 등록되어 있음
728x90
'Backend > Spring 입문' 카테고리의 다른 글
[Spring] 5. 회원관리 예제(웹 MVC 개발) (3) | 2025.04.29 |
---|---|
[Spring] 4. 스프링 빈과 의존관계 (1) | 2025.04.29 |
[Spring] 3. 회원 관리 예제 - 회원 레포지토리 테스트 케이스 작성 / 서비스 개발 / 서비스 테스트 (0) | 2025.04.25 |
[Spring] 3. 회원 관리 예제 - 비즈니스 요구사항 정리 / 회원 도메인과 레포지토리 생성 (1) | 2025.04.19 |
[Spring] 2. 프로젝트 환경설정 (0) | 2025.04.18 |