-
- 정적컨텐츠
Welcome page와 같이 서버에서 하는것 없이 파일을 그래도 웹브라우저에 내려준다. - MVC, 템플릿엔진
파일을 그래도 내려주는 것이 아니라, 서버에서 프로그래밍을해서 html을 동적으로 내려준다. - API
데이터 구조 포멧으로, 데이터를 전달하는 방식.
정적 컨텐츠
Welcome page와 같이 서버에서 하는것 없이 파일을 그래도 웹브라우저에 내려준다.
resorces/static 폴더에 자신이 원하는 html파일을 넣으면, 이 파일을 그래도 내려준다.
단, 어떤 프로그래밍을 할 수 없다.내장 톰캣서버가 요청을 받는다. 이를 스프링에게 넘기고, 스프링은 먼저 controller에서 hello-static을 찾아보게 된다. 해당 controller가 없으면, 내부의 아까 언급한 폴더의 파일을 찾아서 반환을 해준다.
MVC, 템플릿엔진
- View
화면을 그리는데 역량을 집중해야 한다.
- Contoller
비즈니스 로직과 관련이 있거나, 내부적인 것을 처리하는데 집중해야 한다.
따라서 화면과 관련된것들는 view, 비즈니스로직이나 서버와 관련된 것들은 controller나 서버 뒤에서 처리를하고, model에 화면에 필요한 것들을 담아서 넘겨준다.
@GetMapping("hello-mvc") public String helloMvc(@RequestParam(name = "name") String name, Model model){ model.addAttribute("name", name); return "hello-template"; }
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Hello</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p th:text="'안녕하세요. ' + ${name}">hello! empty</p> </body> </html>
name을 spring으로 입력을 했다. 따라서 name이 spring으로 바뀌게 되고 value도 spring으로 바뀐다. 결과적으로 html의 name자리가 spring으로 바뀌게 된다.
API
데이터를 바로 내린다.
@GetMapping("hello-string") @ResponseBody// public String helloString(@RequestParam("name") String name){ return "hello" + name;//name이 spring이면, hellospring }
ReponseBody: html body부분을 내가 직접 넣어주겠다는 의미.
실행 시켜보면 해당 문자열이 소스에 바로 들어가게 된다.
hello-api를 요청받고, 톰캣은 스프링에 이정보를 넘겨준다. 스프링은 controller에 hello-api를 가지고 있고, @ResponseBody가 붙어있기 때문에 이 데이터를 그대로 넘기는 방식으로 동작한다. 이때 HttpMessageConverter가 동작하게 된다. 문자면 String Converter가 동작하고, 객체면 Json Converter가 동작하게 된다.
728x90'스프링' 카테고리의 다른 글
싱글톤 컨테이너 (0) 2022.12.22 IOC,DI,컨테이너 (0) 2022.12.19 빈 등록 (0) 2022.12.19 의존관계에 대한 이해 (0) 2022.12.19 동작과정 (0) 2022.12.19 - 정적컨텐츠