스프링 웹 개발 기초

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

0개의 댓글