정적컨텐츠/MVC/API

Sangkyeong Lee·2021년 5월 19일
0

인프런 강의 < 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 > 정리


정적 컨텐츠

<!DOCTYPE HTML>
<html>
<head>
 <title>static content</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>


1. 웹 브라우저에서 http://localhost:8080/hello-static.html 검색
2. Tomcat에서 요청을 받음
3. controller가 존재하지 않는 것을 판단
4. resources내에 있는 hello-static.html을 찾고 존재하면 반환

MVC와 템플릿 엔진

  • MVC: Model, View, Controller
    • View: 화면 구성에 집중
    • Controller: 비지니스 logic, 내부적인 일들을 처리에 집중

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>

  1. 웹 브라우저에서 localhost:8080/hello-mvc 넘긴다.
  2. Tomcat에서는 hello-mvc에 Mapping되어 있는 Controller 존재를 찾음
  3. 스프링은 해당 method를 호출하고 return값과 key값을 View로 넘김
  4. viewResolver가 Thymeleaf 템플릿 엔진에 처리 해달라고 넘김

API

일반 ResponseBody

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

@ResponsBody는 HTTP의 body에 직접 데이터를 내려주는 것을 말한다

객체로 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;
        }
    }
}
{"name":"spring!!"}


< 자료 출처: 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 >

profile
💻Backend Developer

0개의 댓글