본문 바로가기

WINK-(Web & App)/Spring Boot 스터디

[2025 1학기 스프링 부트 스터디] 정다은 #2주차

반응형

이번 강의는

🚀 섹션 3. 스프링 웹 개발 기초 🚀

입니다~

 

1. 정적 컨텐츠

    서버가 하는 일 X / 파일을 웹 브라우저(고객)에 그대로 내려줌 

2. MVC와 템플릿 엔진

    서버에서 html을 동적으로 변형.

3. API 

    json이라는 데이터 포맷으로 클라이언트에게 파일 내려줌

    화면은 클라이언트가 알아서 구성

    html이 필요없는 서버간 통신시 주로 사용

 

이렇게 간단히 정리해보았고 자세한 내용을 실습과 함께 시작해 봅시다 😮‍💨

 

1. 🛸 정적 컨텐츠

스프링 부트 자동제공 기능입니다.

 

아무 html 파일 작성해서 localhost로 파일 열면

그냥 작성한 파일 그대로 반환. 

 

정적 컨텐츠 이미지

 

2.  🛸 MVC와 템플릿 엔진

MVC란? : Model, View, Controller 

 

Controller : 내부적인 것 처리에 집중

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

 

View : 화면 구성에 집중

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

 

3. 🛸 A PI 

@ResponseBody 문자변환

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

@ResponseBody 사용하면 viewResolver 사용하지 않음

대신 Http의 body 에 문자 내용을 직접 반환

 

@ ResponseBody 객체 반환

    @Controller
    static 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 방식으로 통일 되었다고 합니다.

json으로 반환하는 것이 기본. 

 

@ResponseBody를 사용

  • HTTP의 BODY에 문자 내용을 직접 반환
  • viewResolver 대신에 HttpMessageConverter 가 동작
  • 기본 문자 처리 : StringHttpMessageConverter
  • 기본 객체 처리 : MappingJackson2HttpMessageConverter (Jackson : 객체 -> json 변환)
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음. 

 

🚀🛸 🛸🚀

다음 주에 만나요 ~ 

반응형