반응형
MVC?
MVC패턴은 디자인 패턴중 하나이다. Model, View, Controller의 약자이며, 각각 서로 맡은 책임을 기반으로 프로젝트가 구상된다.
- Model : 주로 DB 접근을 한다
- View : Template관련 책임을 맡는다. Django에서는 Template이 View의 역할을 한다.
- Controller : Request에 대해, Template엔진연결, 필요한 Model 접근등,전반적인 통제 역할을 한다. Django에서는 View가 Controller 역할을한다
스프링에서 기본적인 Controller, View 방식 사용해보기
컨트롤러는 아래와 같이 작성해 주었다. @RequestParam을 사용하면 URL을 통해 매개변수를 받을 수 있다. @RequestParam의 매개변수중 value는 url parameter의 key값에 해당하는것을 의미하고, required는 이 값이 필수인지를 지정해 줄 수 있다. url parameter의 값은 옆에있는 String name을 통해 받아오는것이다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMVC(@RequestParam(value = "name", required = false) String name,Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
그리고 resources/templates/hello-template.html에는 아래와 같이 템플릿을 작성해 주었다
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p th:text="'안녕하세요. ' + ${name}">안녕하세요</p>
</body>
</html>
URL parameter로 key값이 name인 parameter에 대해 Hello World를 넘겨주었더니, 템플릿에서 주어진 값으로 변환하여, 반환하는것을 볼 수 있다.
MVC의 기본원리는 위와 같다.
- Request를 Embeded Tomcat에서 받는다.
- Controller에 request와 동일하게 매핑된 컨트롤러가 있는지 확인한다. 있는 경우, 해당 컨트롤러는 viewResolver에 템플릿의 이름과 Model을 반환한다. Model은 key : value형태이며, View에 속성값을 넘겨 줄 수 있게끔 도와준다
- viewResolver는 반환된 이름의 템플릿을 찾은 후, Model과 템플릿 엔진을 이용해 템플릿을 변형하고, 변형된 템플릿을 반환한다.
반응형
'Back-End > Java Spring Boot' 카테고리의 다른 글
[Spring Boot] 일반적인 웹 애플리케이션 계층 구조 (0) | 2022.03.13 |
---|---|
[Spring Boot] API 방식 (0) | 2022.03.13 |
[Spring Boot] Spring Static Content (0) | 2022.03.12 |
[Spring Boot] Welcome Page 만들어보기 (0) | 2022.03.12 |
[Spring Boot] 프로젝트 생성하기 (0) | 2022.03.12 |