본문 바로가기
Spring/스프링 입문

인프런 스프링 입문 강의 정리 #2

by 예린lynn 2023. 11. 16.
728x90

스프링 웹 개발 기초

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

1. 정적 콘테츠

    -클라이언트의 요청을 받고 서버에 미리 저장된 HTML, CSS 등의 파일을 그대로 응답해 보여주는 것

    -런타임 시에 컨텐츠의 내용이 변경되지 않고 현재 소스 코드 그대로 페이지를 보여준다.

src/main/resources/static/hello-static.html

 

http://localhost:8080/hello-static.html

 

파일의 내용 그대로 웹브라우저에서 보여주고 있다.

 

1. 웹브라우저에서 url을 입력해서 내장 톰켓 서버에 요청을 한다.

2. 먼저 스프링은 hello-static 관련 컨트롤러가 있는지 찾고, 있으면 반환한다.

3. 만약 없다면, 스프링부트는 resource에서 hello-static을 찾고 있으면 반환한다.

 

2. MVC와 템플릿 엔진

    -MVC: Model, View, Controller

    -Controller는 내부적으로 비즈니스 로직을 처리하고, View는 화면 설계 및 보여지는 것에 집중한다.

    -사용자가 Controller를 조작하면 Controller는  Model을 통해 데이터를 가져오고,

      그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달한다.

 

 HelloController.java에 아래 코드를 추가한다.

cf) @Controller : 해당 클래스가 Controller임을 나타내기 위한 어노테이션

     @GetMapping : Get 요청을 하는 API의 어노테이션으로 데이터를 가져올 때 사용한다.

     @RequestParam : url을 통해 전달된 값을 파라미터로 받아오는 어노테이션이고,

                                   반드시 요청 파라미터가 존재해야 한다. (value=" ", required = false)

      Model model : 컨트롤러에서 뷰로 데이터 전달

      model.addAttribute("name", name) : "name"이라는 속성을 model에 추가하고, value 값으로는 요청받은 name을 설정

 

template/hello-template.html을 생성한다.

 

@RequestParam은 요청 파라미터 값이 필수적으로 요구되기 때문에, name의 값을 지정해야 한다. 

만약 설정하지 않았다면 localhost:8080/hello-mvc?name=spring으로 입력하여 name의 값을 spring으로 바꿔서 요청해야 한다.

 

cf) ${name}에서 name의 값은 spring이 된다

 

1. 웹브라우저에서 url을 입력해서 내장 톰켓 서버에 요청을 한다.

2. 톰켓은 Controller에 요청을 보내고, 메소드를 매핑한다.

3. 메소드가 모델에 변수(name)를 지정하고, hello-template를 리턴한다.

4. viewResolver는 템플릿엔진을 연결해준다.

5. html을 찾아서 Thymeleaf 엔진에 전달하고, 엔진은 변환한 html을 웹 브라우저에 넘겨준다.

 

3. API

HelloController.java에 아래 코드를 추가한다.

@ResponseBody : http의 응답 body 부분에 데이터를 직접 반환하기 때문에, viewResolver를 사용하지 않는다.

 

HelloController.java에 아래 코드를 추가한다.

객체를 생성 후 반환을 하는데, 그 결과가 json 형식(key-value 쌍)을 이용하여 객체가 표시된다.

 

viewResolver 대신에 HttpMessageConverter가 동작하여 객체 혹은 문자를 json 형태로 변환 후 반환한다.

 

 

728x90