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

MineeHyun·2024년 7월 2일
0
post-thumbnail

이 시리즈는 김영한 선생님의 인프런 강의를 들으면서 필기한 내용들입니다 강의 링크
섹션 1까지는 개괄적인 설명 & 환경설정이므로 따로 필기하면서 듣지 않았음...
틀리거나 이상한 내용이 있을 가능성이 아주 아주 아주 아주 높음

1. 정적 컨텐츠

  • 정적 컨텐츠 (static content)
    서버에서 처리하는 것 없이 파일을 그대로 내려주는 것
    공식 문서: https://docs.spring.io/spring-boot/reference/web/reactive.html#web.reactive.webflux.static-content

    웹 브라우저가 요청을 보내면 내장 톰캣이 스프링 컨테이너한테 먼저 요청을 보낸다. (받은 요청을 까서 controller가 있는지부터 찾는다.) 없으면 resources 안에 있는 파일을 찾는다. -> controller를 우선적으로 탐색한다는 것

  • MVC와 템플릿 엔진
    MVC (Model View Controller): 모델(주고받는 데이터의 형식)과 뷰(보여지는 방법)와 컨트롤러(처리할 방법)를 분리
    참고: https://developer.mozilla.org/ko/docs/Glossary/MVC
    템플릿 엔진: html을 그냥 주는 게 아니라 서버가 프로그래밍 해서 동적으로 바꿔서 주는 것
    서버가 어떻게 프로그래밍 하는가 <- 요 부분이 템플릿


파라미터 정보 보는 단축키 ctrl + P

  • 웹 브라우저가 요청을 보내면 톰캣이 컨트롤러한테 요청을 넘긴다.
  • (이 예시에선 요청받은 것을 컨트롤러 안에서 찾을 수 있으니까) 처리한다. hello-template라는 view를 return한다. (model도 함께 보낸다.)
  • viewResolver라는 친구가 hello_template.html을 처리해서 웹 브라우저에 보낸다. : 이 과정에서 템플릿 엔진 처리가 들어간다. (강의에서는 타임리프)
  • viewResolver는 요청받은 html을 적절한 템플릿으로 처리함!!

작은 궁금증:
html을 변환하면 어떤 일이 일어나는 걸까?
뭘로 변환시키는 걸까?

  • API
    JSON으로 클라이언트한테 내려주는 것 (옛날에는 xml도 썼음)
    서버끼리 데이터가 흐를 때 굳이 html로 주고받을 필요 없으니... 서버끼리 통신할 때도 쓴다


단축단축단축키

기본적으로는 @ResponseBody 하면 JSON 형식을 return한다. (원하면 xml이나 다른 것을 리턴해도 되긴 하지만...)
ctrl+N generate 단축키 (getter/setter 만들기 가능)

@ResponseBody가 있으면 반환되는 객체를 보고 HttpMessageConverter가 구른다

  • 기본 문자 처리: StringHttpMessageConverter가 동작
  • 기본 객체 처리: MappingJackson2HttpMessageConverter가 동작 -> 객체를 json으로 바꾼다
  • 이외에도 HttpMessageConverter는 이것저것 여러가지 많은 바리에이션이 있다

0개의 댓글