Spring_이해하기 (웹 개발 기초 3가지)

이준호·2022년 1월 21일

Spring 이해하기

목록 보기
3/4

스프링 웹 개발 기초 3가지 방법

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

정적 컨텐츠

파일을 그대로 웹 브라우저에게 전송 해주는 방식. (static 폴더에 넣은 그대로 출력)

동작 원리

1. 웹브라우저에서 hello-static.html 접근
2. 내장 톰켓 서버 통과 -> 스프링 컨테이너 에서 해당 관련 컨트롤러를 검색 
3. 검색 없을시에 resources 내부에서 찾아서 반환

MVC와 템플릿 엔진

MVC 패턴은 Model,View,Conroller 3가지로 나뉘어 역할을 분할하여 처리하는 패턴이다 MVC 패턴이 나온 이유는 코드를 분리하지 않고 View 에서 모든 내용을 넣으면 가독성이 떨어지고 유지 보수가 힘들어지기 때문이다.

  • Controller = 사용자가 접근한 URL에 요청을 파악해 맞는 Method를 호출하여 Service와 Business Logic 을처리한다 나온 결과는 Model에 저장하여 View 로 던져준다.
  • Model = Controller에서 받은 데이터를 저장하는 역할
  • View = Controller로 부터 받은 Model 데이터를 바탕으로 사용자에게 표현해준다.(HTML,JSP에 해당한다.)

템플릿 엔진이란?

웹 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기한다. 예전 스프링이나 서블릿을 사용했다면
JSP, Freemaker 등이 떠오를테고 요즘은 리액트, 뷰 등이 떠오를 것이다.이것들 모두 결과적으로는 지정된 템플릿과 데이터 를 이용하여 HTML을 생성하는 템플릿 엔진이다.

Code

Controller

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

Templeate

<html xmlns:th="http://www.thymeleaf.org"/>
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

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

동작원리

1. 웹브라우저에서 hello-mvc 접근
2. 내장 톰켓 서버 통과 -> 스프링 컨테이너 에서 해당 관련 컨트롤러를 검색 
3. helloController가 Model에 name을 담아 hello-template를 반환
4. 반환된 정보로 View Resolver를 통해 hello-template.html을 찾아 연결 html 변환후 실행
  // 정적 컨텐츠와 다르게 변환해주는 원리

API

ResponseBody 를 사용하여 Templeate 엔진과 다르게 View Resolver를 사용하지않고 HTTP의 BODY 문자내용을 직접 반환할수있다.
과거에는 xml 방식으로 API가 많이 사용되었다 하지만 요즘에는 Json 방식
으로 통일되는 느낌으로 가고있다 Json 에대한 내용은 아래에 있다.

Code

 @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;
        }
    }
}

문자가 아닌 객체를 넘겼을때 아래와 같은 출력이 나오는데
{"name":"spring!!!!!!"}
이는 json 방식으로 key-value 로 이루어진 구조이다.

동작원리

1. 웹브라우저에서 hello-api 접근
2. 내장 톰켓 서버 통과 -> 스프링 컨테이너 에서 해당 관련 컨트롤러를 검색 
3. helloController가 @ResponseBody라는 에너테이션을 만남
4. ViewResolve 대신 HttpMessageConverter 가 동작
5. String 이면 Http동작에 그대로 Bdoy 를 넘기고 객체이면 Json방식으로 만들어서 반환

Reference

김영한 강사님의 Spring 입문 강의를 토대로 복습하기위한 글 이며 벨로그 글 
강의를 들은 다른분들의 학습내용이 포함되어 있습니다
해당하는 모든 출처는 링크와 강의에 있습니다.

블로그 링크
강의 링크
나무위키 링크

profile
IT 학습과정중 학습내용을 복기하기 위해 사용하는 블로그 입니다.

0개의 댓글