본문 바로가기
스프링 (Spring)

자바 스프링입문4 - 정적컨텐츠, mvc, api

by codeyaki 2022. 1. 26.
반응형

서버 동작 방식

1. 정적 콘텐츠 :

서버에서 뭔가 동작하지 않고 페이지를 보여주는 방식

2. 동적 컨텐츠 : 

  • 템플릿 엔진 :
    서버에서 프로그래밍 후 동적으로 템플릿 엔진을 통해 html을 뿌려주는 방식
    모델 1 방식! mvc개념이 생기기 전까지 view에서 처리를 다했었음!!
    그래서 view의 코드가 엄청나게 길어짐
  • mvc :
    model - view - controller를 통해 html을 동적으로 관리해주는 방식
    controller에서 처리를 해서 model에 담아 view를 렌더링!

3. api :

안드로이드, ios와 같이 json데이터 포맷을 이용해 클라이언트에게 전달하는 방식

서버끼리 통신할때도 사용함!

 

스프링 부트 정적컨텐츠 api

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io


스프링에서의 정적컨텐츠

src/resources/static 폴더에 페이지 생성

동작 확인 - localhost:8080/hello-static.html 접속해보기

동작 방식 설명

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/lecture/49576?volume=1.00&mm=close

컨트롤러가 먼저 hello-static 컨트롤러가 있는지 확인함

(컨트롤러가 우선순위를 가짐!!)

없으므로 동적 콘텐츠( resources/stiatic 폴더 안)에 hello-static.html 이 있는지 확인함!!

즉 1. 컨트롤러 2. 동적 콘텐츠 순으로 확인함!


스프링에서의 MVC와 템플릿 엔진

MVC : Model, View, Controller

  • View : 단순하게 화면을 표현해주는 역할
  • Controller : 비즈니스 로직, 서버 단위 처리 후 모델에 관련 데이터를 담아서 View에 전달
  • Mode : 데이터를 담는 곳

사용해보기

1. Controller 생성

이전에 만들었던 src/main/hello.hellospring/controller/HelloController.java 에 새로운 동작을 추가해보자.

  • @RequestParam(value = "name", defaultValue = "son") : 파라미터를 받는데 아무 입력이 없을 경우 "son"으로 저장한다. (get방식)

2. View생성

resources/template 폴더에 hello-template.html 생성

3. 동작 확인하기

http://localhost:8080/hello-mvc 접속하면 기본 값인 son으로 나오는 것을 볼 수 있다.

url에 파라미터 전달방법: 주소 뒤에?를 붙인 뒤 전달해주면 된다.

http://localhost:8080/hello-mvc?name=spring!

 

동작 과정


스프링에서의 API

: @ResponseBody를 추가로 어노테이션 해주면 viewResolve를 호출하지 않고 데이터 자체를 반환함.

 

사용해보기 1 (기본형)

1. controller 생성

기존의 생성 방식과 동일함. 하지만 @GetMapping아래 @ResponseBody를 추가로 어노테이션 해준다

2. 사용해보기

http://localhost:8080/hello-string?name=hi 시

return "hello" + name; 문장 그대로 "hellohi"가 전달된 것!

 

사용해보기 2 (객체 반환)

1. 컨트롤러에 추가해주기 

  • @ResponseBody를 어노테이션 하는 다른 부분은 같으나 객체를 반환해주기!
  • getter/setter 방식을 사용함(단축키 alt + insert)

2. 동작 확인해보기

http://localhost:8080/hello-api?name=hi 접속해보기

  • 객체를 반환 시 Json 데이터 형식으로 값이 전달된 것을 확인할 수 있다.

동작 방식

스프링은 객체형을 반환할 때 Jackson2 라이브러리를 사용해서 Json으로 변환 후 반환해줌

 

반응형