스프링 웹 개발 기초를 알아보자! 섹션2 by 김영한

Karim·2023년 1월 27일
4

SpringBoot

목록 보기
8/15

1. 스프링 입문

💬

  • 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 by 김영한

섹션 2. 스프링 웹 개발 기초

- 정적 컨텐츠

  • file을 그대로 web brower에 내려주는 방식

💡 원리

  • web brower에서 test.html을 치면
  • 내장 톰캣 서버가 요청을 받고
  • test.html을 스프링 부트에 넘긴다
  • 스프링 부트는 controller에서 test.html을 찾는다.
  • 관련된 controller가 없으면
  • 내부안에 있는 static dir에 test.html 을 찾는다.
  • 있으면 해당 html을 리턴한다.

- MVC와 템플릿 엔진

  • modle : view에서 controller에 데이터를 넘기는데 사용
  • view : 화면을 그리는데 집중
  • controller : 비지니스 로직에 집중

💡 원리

  • web brower에서 mvc 를 넘기면
  • 내장 톰캣 서버가 요청을 받고
  • mvc를 스프링 부트에 넘긴다.
  • 스프링 부트는 controllermvc가 있으면
  • viewResolvertemplates에 mvc 이름과 같은걸 찾아서 thymeleaf에 처리 해달라고 넘긴다
  • thymeleaf가 html로 변환해서 넘겨준다.

📃 tip

  • @RequestParam
    • 사용자가 전달하는 값을 1:1로 매핑해주는 어노테이션이다.
      보통 파라미터를 통해 값을 전달할 때 자주 사용한다.
    • require default = ture ( 값을 넘겨야함 )

      localhost:8080/mvc?name=karim

✒️ code

@Controller
public class testController {

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

- API

  • 데이터 방식으로 return에 값을 그대로 내려주는 방식

💡 원리

  • web brower에서 api 를 넘기면
  • 내장 톰캣 서버가 요청을 받고
  • api를 스프링 부트에 넘긴다.
  • 스프링 부트는 controllerapi가 있고 @ResponseBody가 붙어 있으면
  • HttpMessageConverter가 동작한다.
  • Convert 후 convert 형식으로 변환해서 넘겨준다.

📃 tip

  • @ResponseBody : 응답 body에 문자 내용을 직접 반환
    • 기본 반환 타입 : json
  • HttpMessageConverter
    • 기본 문자열 객체 StringHttpMessageConverter가 동작한다.
    • 기본 객체면 MappingJackson2HttpMessageConverter가 동작한다.
      • Spring 기본 Jackson 탑재

✒️ code

@Controller
public class testController {

    @GetMapping("api")
    @ResponseBody
    public Karim mvc(@RequestParam("name") String name){
        Karim karim = new Karim();
        karim.setName(name);
        return karim;
    }

    @Data
    static class Karim {
        private String name;
    }
}

📌 여담

  • 실무에서 스프링을 쓴지도 얼마 안 됐지만 항상 비지니스 로직만 개발해서 기초에 필요성을 느끼는중 ㅜㅜ
  • 잘못된 부분이 있거나 수정될 부분이 있으면 피드백 주시면 감사하겠습니다.

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글