Spring 스터디 2주차 - 정적컨텐츠, MVC와 템플릿 엔진, API

jada·2023년 10월 2일
0

Spring 스터디

목록 보기
2/35
post-thumbnail

정적 컨텐츠 : 서버에서 따로 개입하지 않고 파일을 그대로 웹브라우저에 내려주는 방식
MVC와 템플릿 엔진 : 가장 많이 사용하는 방식. JSP, PHP(대표적인 템플릿 엔진)와 같이 서버에서 프로그래밍 해 html을 동적으로 바꿔 내려주는 방식
API : JSON 데이터 포맷으로 클라이언트에 데이터 내려주는 방식

정적 컨텐츠

스프링부트는 기본적으로 정적 컨텐츠를 자동으로 제공함.
resources/static 폴더에 파일 작성하면 파일명과 같은 url에 해당 파일의 내용이 렌더링 됨. -> 동적 프로그래밍은 불가능

MVC와 템플릿 엔진

  • MVC : Model, View, Controller
  • View : 화면을 그리는 데 집중

  • Controller, Model : 비즈니스 로직과 관련 있거나 내부적인 것들 처리하는 데 집중

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


-> viewResolver라는 템플릿 엔진이 view를 html로 변환해 웹브라우저에 넘겨줌

API

@GetMapping("hello-string")
    @ResponseBody  //http에서 응답 body부에 return 데이터를 직접 넣어주겠다는 의미
    public String helloString(@RequestParam("name") String name) {
        return "hello " + name;
    }

-> 템플릿 엔진과의 차이 : view없이 return 데이터가 그대로 클라이언트에 넘어감.

@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;
        }
    }

-> 클라이언트에 response 데이터가 JSON 포맷으로 넘어감
spring에서 객체를 반환, @ResponseBody를 사용했다면 기본으로 객체를 JSON 포맷으로 바꿔서 넘겨줌 (HttpMessageConverter의 JsonConverter가 작동)

@ResponseBody의 작동원리

@ResponseBody 를 사용
HTTP의 BODY에 문자 내용을 직접 반환
viewResolver 대신에 HttpMessageConverter 가 동작
기본 문자처리: StringHttpMessageConverter
기본 객체처리: MappingJackson2HttpMessageConverter
byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
참고: 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서
HttpMessageConverter 가 선택된다.

profile
꾸준히 발전하는 개발자가 되자 !

0개의 댓글