티스토리 뷰

Spring

Spring 1

먹태 2020. 10. 13. 19:20

 

start.spring.io : 스프링 프로젝트 알아서 만들어줌

 

- 과거에는 Marven, 요즘은 Gradle로 많이 한다

- Marven vs Gradle  -> bkim.tistory.com/13

- Spring Boot : snapshot이나 m3가 안붙은 최신형으로 쓰는게 좋음

- Dependencies : 어떤 라이브러리를 땡겨서 쓸거냐

- 선택완료 후 다운로드 -> 압축풀기

- 인텔리제이에서 오픈할때 build.gradle 오픈

- resources : xml, 프로퍼티, html 파일 등등(자바파일 제외한것)

 

 

 

* 스프링 부트가 제공하는 Welcome Page 기능

- static/index.html 을 올려두면 Welcome page 기능을 제공한다.

 

 

 

thymeleaf 템플릿 엔진 동작 확인

 @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","test!! ");
        return "hello";
    }

 

 resources/templates/hello.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'ㅎㅇ~~!!' + ${data}" ></p>
</body>
</html>

 

- 컨트롤러에서 리턴 값으로 >>>문자<<<를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리

위 소스에선 리턴값이 "hello"여서 기본적으로 templates의 hello.html을 찾아간다

(스프링부트 viewName 맵핑,  resource:templates/'{ViewwName}.html')

 ex) return "hello"  -> resources/templates/hello.html

 

http://localhost:8080/hello

 

 

 

 

 

MVC와 템플릿 엔진

- @RequestParam으로 name값을 받아와 hello-template.html으로 이동

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

- 리턴값이 "hello-template", Model 객체를 만들어 name값을 담았다

 

resource/templates/hello-template.html

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'test ' + ${name}"></p>
</body>
</html>

http://localhost:8080/hello-mvc?name=JJJJung

 

 

 

 

 

API

- @ResponseBody

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name")String name){
        ///http body 부분에 바로 ㄱㄱ
        return "hello"+name;
    }

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

(HTML BODY TAG를 말하는 것이 아님)

 

 

http://localhost:8080/hello-mvc?name=body부분에 바로 들어감

 

 

 

@ResponseBody 객체 반환

- 반환하는게 객체면 기본적으로 json형식으로 반환

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        hello.setAge(30);
        return hello;
    }


    static class Hello {

        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

http://localhost:8080/hello-api?name=Juuuung&age=20

- @ResponseBody 객체 리턴할때 객체를 넘길때는 디폴트가 제이슨 형태로 데이터를 만들어 반환함

- HttpMessageConverter동작 (StringHttpMessageConverter, StringHttpMessageConverter ,,,,,)

 

 

 

페이지 소스 보면 html 없이 json 그대로인걸 확인할 수 있다 

'Spring' 카테고리의 다른 글

Spring 3  (0) 2020.10.19
Spring 2  (0) 2020.10.13
[Spring] DI Annotation 예제  (0) 2018.05.13
[Spring] DI 기본예제 3  (0) 2018.05.13
[Spring] DI 기본예제 2  (0) 2018.05.13
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday