❗️이 포스팅은 인프런의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB접근 기술] 강의를 정리한 내용입니다.❗️

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

[스프링 입문기 5] 스프링 웹개발 기초

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API 방식

정적 컨텐츠

  • 서버에서의 변형 없이 정적 파일을 그대로 웹 브라우저에게 넘겨줌
  • Spring Boot에서는 /static 폴더에서 정적 컨텐츠를 사용할 수 있도록 제공한다.

정적 컨텐츠 작동 방식

  1. 웹 브라우저에서 localhost:8080/hello-static.html 경로로 들어가면 내장 톰켓 서버가 요청을 받는다.
  2. 가장 먼저 hello-static과 관련된 컨트롤러가 존재하는지 찾아본다. (컨트롤러가 우선순위)
  3. 없다면 resources : static/hello-static.html를 찾는다.

MVC와 템플릿 엔진 

  • MVC란 하나의 애플리케이션을 만들 때의 개발 패턴으로, Model(모델), View(뷰), Controller(컨트롤러)이라는 세 가지 구성 요소로 소프트웨어를 구조화하는 방법을 말한다. 
  • Model : 모델이란 데이터와 비즈니스 로직을 담당하는 부분으로서, 애플리케이션의 데이터를 처리하고, 상태를 유지하는 역할을 말한다.
  • View : 뷰는 사용자 인터페이스(UI)를 담당하는 부분으로, 데이터를 시각적으로 표현하여 사용자에게 보여주는 역할을 담당한다.
  • Controller : 컨트롤러는 모델과 뷰 사이의 상호작용을 관리하는 부분이다.
  • "name"을 파라미터로 받고, 리턴은 templates/hello-template.html인 컨트롤러를 만들었다.
@GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name") String name, Model model){
        model.addAttribute("name", name); // key : name, value : name
        return "hello-template";
    }
  • "hello-template.html"에서는 모델의 attribute인 name값을 파라미터로 받은 value로 변경하여 html 내용을 동적으로 바꿀 수 있다. 
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaft.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p th:text="'hello '+ ${name}">hello! empty</p>
</body>
</html>
  • 파라미터는 GET 방식처럼 "http://localhost:8080/hello-mvc?name=spring!"처럼 설정해 줄 수 있다. 

API 방식

  • @ResponseBody를 사용. 
@GetMapping("hello-api")
@ResponseBody
public Hello helloAPI(@RequestParam("name") String name){
    Hello hello = new Hello();
    hello.setName(name);
    return hello; //hello라는 객체 자체를 반환
}

static class Hello{
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

API 작동 방식

  • API 방식은 템플릿 방식과 다르게 viewResolver 대신에 HttpMessageConverter가 작동한다. (JSON 포맷으로 변형)
  • 기본 문자는 StringHttpMessageConverter, 기본 객체는 MappingJackson2HttpMessageConverter가 처리한다. byte처리와 같은 다른 형식들도 기본적으로 HttpMessageConverter가 탑재되어 있다.
반응형
SMALL

+ Recent posts