정적 컨텐츠
resources -> static -> Hello-static.html파일을 만들어준다.
🌊 작동원리
localhost:8080/hello-static.html을 웹브라우저에서 실행하면 내장 톰캣서버가 요청을 받고 이것을 스프링에 넘긴다.
스프링은 hello-static관련 컨트롤러를 찾아본다. 하지만 이거와 관련해서 mapping이 된 컨트롤러가 없다.
그래서 resources에서 hello-static.html을 찾고 이것을 hello.static.html로 반환해준다.
MVC와 템플릿 엔진
MVC는 model view controller이다.
view : 화면을 그리는데에만 집중
model,controller : 비즈니스 로직
아까 정적 컨텐츠는 resources-> static으로 갔다면 동적으로 html을 바꿀 수 있는 템플릿엔진은 resources->templates
로 가면 된다.
HelloController.java에 hello-mvc를 GetMapping해준다.
resources ->templates에서 hello-template.html을 만들어준다.
attributeName이 name이였기에 (HelloController.java에서 매개변수로 name을 받아옴) 여기서도 name으로 설정해야 한다. $ 표시를 통해 model에서 key값인 name을 꺼내야 하기 때문이다!
하지만 이렇게 하면 에러가 뜬다.
에러메세지를 보니 name이 없다고 한다.
get방식을 통해 (물음표 사용) name에 해당하는 파라미터를 url에서 넘겨줘야 한다.
++) get방식: ?를 사용하여 파라미터를 작성하고 &를 붙여 여러개의 파라미터 구분
++) post방식: body영역에 데이터를 실어 보낸다. 데이터 전송량에 길이 제한 없음
[네트워크]GET 방식과 POST 방식 이란? 차이점
HTTP GET방식과 POST방식에 대해 알아보기 위해서는 HTTP 프로토콜에 대해 알고 있어야 합니다. HTTP(Hypertext Transfer Protocol)란 하이퍼텍스트 전송 규약으로 Web-Client와 Web-Server간 데이터를 전송하는..
khj93.tistory.com
🌊 작동원리
localhost:8080//hello-mvc가 웹브라우저에 입력이 되면 내장 톰캣서버에서 요청을 받아 스프링한테 hello-mvc를 찾아보라고 한다. 스프링은 제일먼저 controller에서 hello-mvc를 찾는데 있으니까 hello-template을 리턴한다. (후에 이거는 템플릿엔진으로 넘어간다) 그리고 model(name:spring)이 스프링으로 넘어간다.
view Resolver가 hello-template.html을 찾고 템플릿엔진이 이것을 HTML으로 변환해서 웹브라우저에 넘겨준다.
API
정적컨텐츠를 제외하면 스프링에서는 화면을 렌더링하는 방식이
1. html로
2. API방식으로 데이터를 바로 내리기
두가지로 나뉜다.
@ResponseBody
http의 body에 데이터를 직접 넣어주는 어노테이션이다.그래서 spring의 view Resolver가 실행되지않고 httpMessage Converter가 동작을 한다. 여기서부턴 템플릿엔진이랑 연결되지 않는다고 생각하면 된다!
ResposeBody는 문자반환과 객체반환이 있다.
🌈 @ResponseBody 문자반환
왜 "hello "+name이 되는지 궁금할 수 있는데 얘는 템플릿엔진 이런거 쓰는게 아니라서 hello spring을 넣어주고 싶으면
그냥 말 그대로 "hello " +(이름명) 을 리턴해야한다.
🌈 @ResponseBody 객체 반환
HelloController.java에 API형식으로 메서드를 만들어준다.
localhost에 연결하면 json형식으로 값이 출력된다!!
기본은 json으로 반환이 된다. (xml은 과거의 방식)
🌊 작동원리
localhost:8080/hello-api 가 웹브라우저에 입력되면 내장 톰캣서버가 스프링에 넘겨준다. controller에 hello-api가 있으니까 helloController가 이것을 받는데 어랏 ResponseBody가 있다?!! 이대로 http에 넘겨줘야한다. 근데 이게 문자가 아니라 객체를 리턴한다. 객체가 오면 json방식으로 데이터를 만들어서 응답을 한다.
view Resolver대신에 HttpMessageConverter가 동작을 한다. (객체의 경우 json으로 바꿔주는 Jackson이라는 라이브러리가 실행된다, 기본 문자열은 StringMessageConverter가 실행된다)
{name:string}의 형식으로 웹브라우저에 반환된다.
'Springboot > lecture' 카테고리의 다른 글
[springboot] 스프링 빈과 의존관계 (0) | 2022.08.02 |
---|---|
[springboot] 회원 서비스 개발 (0) | 2022.08.01 |
[spring] 테스트 코드 작성하는 방법 (0) | 2022.07.26 |
[spring] 정적파일과 템플릿엔진의 동작 알아보기 (0) | 2022.07.26 |
[Spring] 프로젝트 생성하기 (Gradle vs. Maven / 템플릿엔진) (0) | 2022.07.26 |