본문 바로가기
프레임워크/Spring

[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]섹션 2

by 오오오니 2022. 3. 20.

 

1.정적컨텐츠

정적파일이 그대로 반환된다. 프로그래밍x, 서버에서 하는 것 없이 파일을 그냥 웹브라우저에 내어주는것.

웹브라우저에서 localhost:8080/hello-static.html을 치면 내장 톰켓서버가 요청을 받고 스파링에게 넘긴다.


스프링이 컨트롤러 쪽에서 hello-static이라는 것이 있는지 찾아본다. 

없으면 내부에 있는 (resources) static/hello-static.html을 찾아서 반환해준다.

 

2.MVC와 템플릿 엔진

MVC : Model,View,Controller

View는 화면을 그리는데에 모든 역량을 집중해야한다.
Controller나 model은 비지니스 로직과 관련이 있거나 내부적인 것을 처리하는데에 집중을 해야한다.

제일 많이 하는 방식.서버에서 변형

Absolute Path 를

이렇게 하면

저 회색글씨로 치환된다.

thymeleaf템플릿의 장점은 html파일을 서버없이 열어봐도 껍데기를 볼 수 있다.

 

mac에서는 command +p

window에서는 ctrl + ^(6) +p

 

 

localhost:8080/hello-mvc?name=spring! 라고 치면 이렇게 나온다.

웹브라우저에서 localhost:8080/hello-mvc를 넘기면 내장 톰켓 서버를 거친다.

hello-mvc 라는 것이 왔다고 스프링한테 준다.

스프링은 helloController에 았는 메소드에 매핑이 되어 있기에 그 메소드를 호출해준다.

return은 hello-template이고 model에 key는 name이고 값은 spring을 넣었다.

이것을 스프링에게 넘겨주면 viewResolver가 동작을 한다.

viewResolver가 templates/hello-template.html을 찾아서 Thymeleaf템플릿 엔진에게 처리해달라고 넘긴다.

Thymeleaf엔진이 렌더링을 해서 변환을 한 html을 웹브라우저에 넘긴다.

(정적컨텐츠하고 다른 부분)

3.API

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

return값이 그대로내려간다.

ctrl +shifht +enter 치면 (윈도우)
이렇게 된다.

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

소스보기 하면 이렇게 된다.

json방식 ! 요즘에 제일 많이 쓰는 방식

@ResponseBody를사용하면뷰리졸버( viewResolver)를사용하지않음
대신에 HTTP의 BODY에문자내용을직접반환

객체를반환하면객체가 JSON으로변환됨

 

출처:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

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

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com