ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] MVC RequestParam, ResponseBody
    웹/Spring 2021. 12. 13. 22:53

    MVC

    Model, View, Controller

    View
    - 화면을 그리는데 집중

    Controller, Model
    - 비즈니스 로직, 내부적인 것 처리

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model){
        model.addAttribute("name", name);
        return "hello-template";
    }
    @RequestParam("name") 은 파라미터를 전달받아서 페이지를 리턴한다.
    required 옵션 디폴트는 true 이다. 변수값을 전달해주지 않으면 에러페이지를 출력한다.
    required를 false로 해두면 변수값을 전달해주지 않아도 
    <body>
    <p th:text="'hello ' + ${name}">hello! NULL</p>
    </body>

    data 값에 null 이 들어가서 hello null 을 출력함


    파라미터를 전달해주는 방식은 localhost:8080?name=spring

    name=spring 을 전달해줘서 hello spring 을 출력할 수 있다.


    API 방식

    @ResponseBody
    바디 부에 데이터를 직접 넣어주는 것
    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello " + name;
    }
    localhost:8080/hello-string?name=spring
    //"hello " + name --> hello spring

    hello spring 출력



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

    리턴하는 변수(hello)와 선언하는 객체?의 타입이 같아야하는 것 같음
    객체 hello(타입: Hello) 리턴
    name: spring
    과 같은 객체(JSON) 리턴함

    JAVA Getter, Setter 
    Hello 내부의 변수 name은 private 변수로 getName, setName으로 접근할 수 있음

    @ResponseBody 어노테이션이 붙으면 HttpMessageConverter 가 동작해서 메시지를 그대로 리턴해줌 (HTTP Body에 문자 내용을 직접 반환)
    JsonConverter / StringConverter
    (없으면 template 찾아서 페이지 리턴 - viewresolver 동작)

    ' > Spring' 카테고리의 다른 글

    [Spring] Controller에 GetMapping 이용하여 페이지 호출  (0) 2021.12.20
    [Spring] @Test  (0) 2021.12.14
    [Spring] IoC 컨테이너 / DI  (0) 2021.12.05
    [Spring] 스프링 구조  (0) 2021.12.01
    [Spring] spring-projects/spring-petclinic  (0) 2021.11.28

    댓글

Designed by Tistory.