[spring입문]웹 개발 기초
정적 컨텐츠
받은 것을 그대로 내려줌
웹 브라우저에서 내장 톰캣 서버로 hello-static.html이 오면 스프링한테 hello-static.html가 왔다고 넘김. 스프링은 컨트롤러 쪽에서 hello-static 관련한 것이 있는지 찾아봄(컨트롤러가 우선순위를 갖는다는 뜻). 없으면 리소스에서 hello-static.html를 찾음. 있으면 그냥 반환해주는 것
resources/static/hello-static.html
<!DOCTYPE HTML> <html> <head> <title>static content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> 정적 컨텐츠 입니다. </body> </html>
MVC와 템플릿 엔진
받은 것들을 서버에서 조금 변형을 해서 html을 조금 바꿔서 내려줌
웹 브라우저에서 내장 톰캣 서버로 hello-mvc를 받아서 스프링한테 hello-mvc가 왔다고 알려줌. 스프링은 'helloController에 저 메서드에 매핑이 되어있네?'하고 그 메서드를 호출. 리턴: hello-template. model(name:spring)을 viewResolver(화면과 관련된 어떤 해결자. 뷰를 찾아주고 템플릿 엔진을 연결시켜줌)가 templates/hello-template.html를 찾아서 타임리프 템플릿한테 처리해주세요 하고 넘김. 그럼 템플릿 엔진이 변환을 해서 넘겨줌.
Controller
@Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } }
View
<html xmlns:th="http://www.thymeleaf.org"> <body> <p th:text="'hello ' + ${name}">hello! empty</p> </body></html>
MVC - Model, View, Controller
View - 화면을 그리는데에 집중을 해야함 (예전에는 view에서 다 했음. 디비 접근이나 내부적인 거나 뭐 등등)
Controller - 비지니스 로직과 관련이 있거나, 내부적인 것에 집중을 해야함
API
json이라는 데이터 포맷으로 내려줌(키, 밸류로 이루어진 구조. 심플해서 최근에는 대부분 json을 사용한다고 함). 뷰, 리액트, 등에서 쓰임. 서버끼리 통신할 때
웹 브라우저에서 내장 톰캣 서버로 hello-api를 받아서 스프링한테 왔다고 알려줌. 스프링은 helloController에 hello-api가 있는 걸 확인. @Responsebody가 붙어있으면 http응답에 줘야겠다고 생각함. 그냥 문자인 경우 그냥 넘김(viewResolver대신에 StringConverter). 문자가 아니라 객체인 경우 json방식으로 데이터를 만들어서 http응답에 반환함(viewResolver대신에 JsonConverter). 이게 기본 원칙임.
@ResponseBody 문자 반환
@Controller public class HelloController { @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } }
@Responsebody --> http의 body부분에 이 데이터를 직접 넣어주겠다는 뜻 (걍 무식하게 문자만 그대로 넘어감. html 태그 같은 거 없음). @ResponseBody 를 사용하면 뷰 리졸버( viewResolver )를 사용하지 않음
@ResponseBody 객체 반환
@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으로 변환됨
Author And Source
이 문제에 관하여([spring입문]웹 개발 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ksmlucky/spring웹-개발-기초-33duqo0d저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)