[스프링] 2. 스프링 웹개발 기초

지니🧸·2023년 1월 19일
0

Spring Boot & JPA

목록 보기
31/35

본 문서는 인프런의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한) 강의를 공부하며 작성한 개인 노트입니다.

🥑 정적 컨텐츠

스프링 부트에서 제공되는 기능

  • /static 폴더에서 찾음
  • 내장 톰캣 서버에서 요청을 받아 넘김
  • 스프링은 컨트롤러에서 hello-static을 찾음 (컨트롤러가 우선순위를 가지기 때문)
  • 그 다음 resources/static에서 찾아서 반환

🪂 MVC와 템플릿 엔진

MVC: Model (User interface), View (Data), Controller (Business logic)
템플릿 엔진: 서버에서 프로그래밍을 통해 html을 동적으로 만들어 전달

  • 서버에서 hello-mvc 요청을 받아 helloController에서 찾음
  • hello-template과 model(name:spring)을 넘겨줌
  • 이를 받은 viewResolver가 넘겨받은 템플릿 이름(hello-template)을 가진 html을 찾아 넘겨줌
@GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
  • localhost:8080/hello-mvc?name={데이터값}

🦩 API

  • @ResponseBody : http의 body 부분에 내가 직접 값을 넣겠다
    • 템플릿 엔진과의 차이: view 없이 값이 그대로 넘겨진다
@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 사용
  • 컨트롤러 클래스 내 static 클래스 생성 가능
  • ctrl+enter로 getter/setter/constructer 등 자동 생성 가능

  • @ResponseBody를 인식하고 http에 그대로 데이터를 넘김
    • 값이 객체일 경우에는 디폴트로 기본값이 json으로 데이터를 만들어서 http에 반환함
  • HttpMessageConverter가 동작
    • 값이 단순문자 -> StringConverter 동작
    • 값이 객체 -> JasonConverter 동작, json 형식으로 바꿈
profile
우당탕탕

0개의 댓글