파일을 그대로 웹 브라우저에게 전송 해주는 방식. (static 폴더에 넣은 그대로 출력)
동작 원리
1. 웹브라우저에서 hello-static.html 접근 2. 내장 톰켓 서버 통과 -> 스프링 컨테이너 에서 해당 관련 컨트롤러를 검색 3. 검색 없을시에 resources 내부에서 찾아서 반환
MVC 패턴은 Model,View,Conroller 3가지로 나뉘어 역할을 분할하여 처리하는 패턴이다 MVC 패턴이 나온 이유는 코드를 분리하지 않고 View 에서 모든 내용을 넣으면 가독성이 떨어지고 유지 보수가 힘들어지기 때문이다.

웹 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 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 변환후 실행 // 정적 컨텐츠와 다르게 변환해주는 원리
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방식으로 만들어서 반환
김영한 강사님의 Spring 입문 강의를 토대로 복습하기위한 글 이며 벨로그 글
강의를 들은 다른분들의 학습내용이 포함되어 있습니다
해당하는 모든 출처는 링크와 강의에 있습니다.