본문 바로가기
Backend/Spring

[Spring] 스프링 웹 개발 기초

by eyi-jin 2022. 6. 25.

이 게시글은 [인프런]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 기반으로 작성되었으며 강의를 기억하기 위한 기록물입니다. 순수하게 복습하기 위한 용도로 작성되었음을 미리 밝힙니다.

 

정적 컨텐츠

MVC와 템플릿 엔진

API

 

정적 컨텐츠

URL로 접속하면 서버가 파일을 브라우저로 바로 내려주는 방식

예시

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

<!DOCTYPE html>
<html lang="en">
<head>
    <title>static content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

http://localhost:8080/hello-static.html 접속해서 확인

원리 이미지

우선순위

1) hello-static 관련 컨트롤러

2) resources내부 파일

 

 

MVC와 템플릿 엔진

MVC: Model, View, Controller

model: 화면과 관련된 것을 담음

controller : 비지니스 로직을 작성하는 등 내부의 작업에 집중해야함

view : 화면을 그리는데에 집중해야함

코드

<!-- src > main > resources > templates > hello-template.html  -->
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
//src > main > java > eyijin.hellospring> HelloController > HelloController.java

@Controller
public class HelloController {

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
        model.addAttribute("name",name);
        return "hello-template";
    }
}

http://localhost:8080/hello-mvc?name="spring" 접속 확인

 

원리 이미지

  1. http://localhost:8080/hello-mvc?name=spring 접속
  2. url에 있는 hello-mvc를 컨트롤러에서 찾아서
    파라미터를 모델에 담은 뒤 viewResolver에서 뷰 찾고, Thymeleaf 템플릿 엔진에 연결시켜줌
  3. 템플릿 엔진은 모델에 담긴 파라미터 값을 찾아 화면에 반환한다.

 

 

API

반환값으로 JSON을 사용하여 클라이언트에게 데이터를 그대로 전달(데이터 반환)

화면은 클라이언트가 알아서 그려야함

코드

@Controller
public class HelloController {

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

실행화면

 

원리 이미지

  • @ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환
  • HTTP의 BODY부분에 데이터를 직접 반환한다.
  • viewResolver 대신에 HttpMessageConverter가 동작한다.
    • 기본 문자처리 : StringHttpMessageConverter
    • 기본 객체처리 : MappingJackson2HttpMessageConverter

 

'Backend > Spring' 카테고리의 다른 글

JPA vs MyBatis  (0) 2023.07.09
[Spring] 회원 관리 예제 - 웹MVC 개발  (0) 2022.07.02
[Spring] 스프링 빈과 의존관계  (0) 2022.07.01
[Spring] 회원 관리 예제 - 백엔드 개발  (0) 2022.06.26
[Spring] 프로젝트 환경설정  (0) 2022.06.24

댓글