스프링 웹 개발 기초

onebbu·2023년 2월 12일
0

스프링 웹 개발 기초

정적 컨텐츠

  • welcome 페이지처럼 서버에서 하는 일 없이 웹브라우저에 그대로 내려 주는 컨텐츠
  • 스프링부트는 정적 컨텐츠 기능을 자동 제공
  • 정적 컨텐츠 동작 이미지
  1. 주소창에 localhost:8080/hello-static.html 입력시 웹브라우저가 주소를 톰캣 서버로 보냄
  2. 톰캣 서버가 hello-static를 스프링으로 보냄
  3. 컨트롤러쪽에서 hello-static이 있는지를 찾아봄(컨트롤러 우선순위가 높으므로 컨트롤러가 우선 찾아봄)
  4. 이후 리소스에서 찾아보고 있으면 반환

MVC와 템플릿 엔진

  • MVC: Model, View, Controller
    view는 화면을 그리는데 역량을 집중해야 함.
    Controller는 비즈니스 로직과 관련, 내부적인 것을 처리하는데 집중
    Model은 view와 controller를 조정하는 역할
  • 최근 가장 많이 하는 방식
  • 서버에서 프로그래밍해서 동적으로 보여주는 방식
  • Model, View, Controller을 모두 사용(정적컨텐츠와의 차이: 서버에서 변형해서 내려주는 방식)
    동작 이미지
    http://localhost:8080/hello-mvc?name=spring!
    ?name=spring!: get방식 파라미터 추가

파라미터가 없을 경우 에러 메세지
org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' for method parameter type String is not present

  • MVC와 템플릿 엔진 동작 방식

    정적과 거의 동일하나 파라미터를 넘기는 방식이 추가
    viewResolver가 hello-template.html을 찾아서 Thymeleaf 템플릿 엔진에게 처리를 넘김

API

  • 안드로이드나 아이폰의 경우 서버에서 json포맷으로 클라이언트에서 정보를 전달하는 방식
  • ex) 뷰, 리액트 방식, 서버끼리 통신할 경우

json 방식(key: value 형식)

@ResponseBody 사용 원리


@ResponseBody 를 사용

  • 기본정책: http응답이 오면 json 방식으로 반환
  • HTTP의 BODY에 문자 내용을 직접 반환
  • viewResolver 대신에 HttpMessageConverter 가 동작
  • 기본 문자일 경우 처리 방법: StringHttpMessageConverter
  • 기본 객체일 경우 처리 방법: MappingJackson2HttpMessageConverter
    (Jackson: 객체->json변환 라이브러리)
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

MVC vs API 차이

MVC의 경우 View로 조작해서 내려줌.
API의 경우 조작 없이 그대로 내려줌.

MVC

API

profile
기록하는 습관

0개의 댓글