스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 ( 스프링 웹 개발 기초)

‍정진철·2022년 9월 12일
0

Spring boot

목록 보기
2/2

2) 스프링 웹 개발 기초

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/unit/49576?tab=curriculum

2-1) 정적 컨텐츠 , MVC와 템플릿 엔진, API

  • 정적 컨텐츠 : 단순히 파일을 웹 브라우저에 내려주는 형식
  • MVC와 템플릿 엔진: JSP / PHP 와 같은 템플릿 엔진이 html을 그냥 보내는것이 아닌 서버에서 프로그래밍을 거쳐 html을 동적화 시켜 송출.
    ( MVC: Model , View , Controller)
  • API : JSON이라는 데이터 포맷으로 클라이언트에게 전달.

정적 컨텐츠

정적 컨텐츠

  • hello-static.html
  • 프로그래밍은 불가 (그대로 전송됨)

  • 순서: 해당 url 요청시 톰캣 서버가 hello-static.html 에 대한 Controller (1순위) 를 가장 먼저 확인 -> 있으면 해당 파일 실행 -> 없으면 resources/static/hello-static.html 실행

MVC와 템플릿 엔진

MVC와 템플릿 엔진

  • MVC ( Model , View , Controller)

view

화면을 구현하는데 모든 집중 필요 (Controller 와 분리의 필요성)

Controller

비지니스 로직 혹은 서버 뒷단의 내부적 요소들에 대한 처리에 대한 집중

Model

화면구현에 필요한 정보들을 view에서 전달해주면 담아서 넘겨줌

  1. GetMapping 에 새로운 정보 추가 ("hello-mvc")
  • 파라미터를 활용한 url 등록
  • @RequestParam과 attributeName은 동일한 "name" -> 쿼리 ?name 에 관한 부분, String name 이 해당 쿼리에 대한 value ( 즉, ?name=spring 과 같은 형식)

  • hello - template.html 파일 생성

  1. 원하는 파라미터 값(spring!) 전달


  • 웹 브라우저가 해당 url을 톰캣에게 요청
  • 톰캣이 Controller 찾아서 해당 url에 대한 return 값 (템플릿) 반환
  • 해당 템플릿을 viewResolver가 변환과정을 거쳐 웹 브라우저에게 전송


API

API

HTTP 프로토콜 통신시 요청/응답간의 과정의 메시지 포맷에 있어 HTTP 헤더 ( Generl Header , Request<->Response Header / Entity Header ) 와 HTTP 바디로 구성이됨.

  • ResponseBody

    따라서, HTTP 바디 부분에 개발자가 원하는 내용으로 채우길 원할 때 사용.
    ViewResolver 의 해석과정없이 곧바로 웹 브라우저에 나타나게함.

  • 해당 페이지 소스 확인시 html 형식이 아닌 입려된 문자 형태 그대로 입력되는 걸 확인 할 수 있다. (즉 , thymleaf 의 변환과정이 생략됨)

API 방식으로 데이터 얻기 (객체 반환)

  • Hello 클래스 생성
  • static 타입의 Hello 객체 hello 생성
  • getName, setName 함수 생성

  • 응답 페이지
  • JSON 형태
  • 스프링은 객체 생성후 ResponseBody 요청시 JSON으로 반환하는것이 기본.

동작원리

  • 원래의 작동원리라면 웹브라우저 -> 톰캣 서버-> helloController -> templates 폴더 내 html파일을 viewResolver에게 던짐.
  • 하지만 , @ResponseBody 존재시 http 응답과정에 있어 해당 데이터를 '원형 그대로 ' 넘겨야 겠다고 생각.
  • 그렇지만 응답 타입이 문자형태가 아닌 객체?
  • 객체 존재시 기본 디폴트는 JSON 형태의 응답 방식.
  • HttpMessageConveter 동작 (viewReslover X)
    단순 문자열 : StringConverter 동작
    기본 객체처리: MappingJackson2HttpMessageConverter

// Jackson : 객체를 JSON으로 바꿔주는 라이브러리 , 구글의 GSON 도 존재 , Spring은 Jakson 채택.
// HTTP Accept 헤더와 서버의 Controller 반환 타입 정보 2가지를 조합해 반환 타입(HttpMessageConverter) 결정.

  • 해당JSON 객체 웹 브라우저에게 전달 ( ex) {name: spring} )


profile
WILL is ALL

0개의 댓글