본문 바로가기
spring boot

스프링 부트 뷰와 컨트롤러 살펴보기 #2

by 킹차니 2021. 5. 17.

스프링 부트는 기본 루트로 클라이언트가 요청을 하면 기본적으로 main/resources/static에 index이름의 뷰페이지를 찾아서 준다.

스프링 부트에서 뷰 페이지 파일을 만들 때는 main/resources/이하에 만든다.

현재 resources 디렉토리에 index.html이 있고, localhost:8080/을 url로 요청하면 index.html을 띄어주는 것이다.

 

이제 컨트롤러를 만들고 뷰페이지를 보여주는 내용을 봐보자.

hello.hellospring 아래에 controller디렉토리를 만들고, HelloController클래스 파일을 만든다.

그리고 클래스 안에 아래와 같은 코드를 적어줬다.

1. hello메서드

hello와 매핑되어 있음 즉 localhost:8080/ hello 를 요청하면 이 메소드가 실행된다. model에 'data'라는 이름으로 "hello!"를 저장하고 이 값을 뷰로 전달하고 있다. 컨트롤러가 반환하고 있는 "hello"는 hello.html을 톰캣에게 전달하고, 톰캣은 

뷰정보와(hello.html)와 모델정보(data:"hello!")를 담아서 뷰 파일을 보여준다.

 

hello.html은 아래와 같다.

hello.html

${data}로 날라온 model 데이터를 꺼내 쓸 수 있다. EL연산자, 머스테치등 여러가지를 쓸 수 있는데 여기서는 thymeleaf를 쓰고 있다.

 

 

2. hello-mvc메서드

여기서는 @RequestParam으로 쿼리스트링을 받고있다. 즉 쿼리스트링으로 < ?name=문자 > 요렇게 날리면 그 값을 name으로 받아서 

모델 객체에 데이터를 추가하고 , hello-template.html로 날려준다. (반환에서 "hello-template"만 쓰여 있는데, 이는 사실

resource:static + "hello-template" + .html 요렇게 전달되는 것이다. 생략된 파일 경로, 확장자는 뷰리졸버가 붙여줘서 생략가능한 것.

 

위 사진의 url을 날리면

아래 hello-template.html을 통해서

위처럼 나온다.

 

 

3. helloString메서드

여기에는 전에 없던 @ResponseBody가 보인다. http로 통신할 때 여러 정보가 담긴(인코딩, 데이터 형식 등) head와 다른 나머지 데이값들이 담긴 body로 날라가는데 요 body를 직접 날려주겠다는 것이다.

즉 메서드의 반환값을 보면 뷰페이지의 이름을 반환하는게 아니라 문자열을 그대로 날려준다.

요렇게..

 

4.HelloApi 메서드

얘도 똑같이 @ResponseBody를 사용하고 있다. 얘를 사용하면 객체를 반환하도록 하면 해당 객체를 JSON형식으로 돌려준다. 

이는 프론트엔드와 백엔드, 백엔드와 백엔드 사이에서  데이터를 주고 받을 때 자주 사용된다.

 

쿼리스트링으로 name=문자 를 날리면 해당 문자를 Hello객체의 setName 세터로 이름을 정해주고, 그 객체를 반환하도록 되어 있다. 결과를 봐보자.

객체를 반환했을 뿐인데 이렇게 JSON 형태가 출력된것을 볼 수 있다.

'spring boot' 카테고리의 다른 글

hibernate.generate_statistics=ture  (0) 2023.02.21
스프링 동작 흐름(참고용)  (0) 2021.07.25
스프링 부트 테스트 코드 #3  (0) 2021.05.17
스프링 부트 프로젝트 만들기 #1  (0) 2021.05.17