MVC 모델?
스프링 부트에서 MVC 모델은 애플리케이션의 구조를 설계하고 관리하는 방법 중 하나로, MVC는 모델(Model: M), 뷰(View: V), 컨트롤러(Controller: C)로 분류합니다. 이 패턴은 소프트웨어를 세 가지 역할로 구분하여 개발하고, 이를 통해 애플리케이션의 유지보수와 확장을 용이하게 합니다.
Model
모델은 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터베이스와 상호 작용하거나 비즈니스 규칙을 적용하여 데이터를 가공하는 역할을 합니다. 주로 데이터를 가져오고 저장하는데 관련된 코드가 모델에 포함됩니다.
스프링 부트에서는 데이터베이스와의 상호 작용을 위해 JPA(Java Persistence API)를 사용하거나, JDBC(Java Database Connectivity)를 사용하여 데이터베이스에 접근할 수 있습니다. 또한 비즈니스 로직을 수행하기 위한 서비스 클래스도 모델에 속합니다.
View
뷰는 애플리케이션의 사용자 인터페이스(UI)를 담당합니다. 사용자에게 보여지는 부분으로, 주로 HTML, CSS, JavaScript를 이용하여 웹 페이지를 구성하는데 사용됩니다. 뷰는 사용자와 상호 작용하며, 모델에 저장된 데이터를 표시하거나, 사용자 입력을 받아 컨트롤러로 전달하는 역할을 합니다.
스프링 부트에서는 Thymeleaf, Freemarker, JSP 등의 템플릿 엔진을 이용하여 뷰를 생성하고 관리할 수 있습니다.
Controller
컨트롤러는 모델과 뷰를 연결해주는 역할을 합니다. 사용자의 요청을 받아 해당 요청에 대한 처리를 담당하고, 그 결과를 뷰에 전달하여 사용자에게 보여지도록 합니다. 컨트롤러는 주로 사용자의 액션에 대한 처리를 담당하며, 요청된 데이터를 모델에 전달하거나, 모델에서 가져온 데이터를 뷰에 전달합니다.
스프링 부트에서는 @Controller 어노테이션을 이용하여 컨트롤러를 정의하고, @RequestMapping 어노테이션을 사용하여 URL과 컨트롤러 메서드를 매핑할 수 있습니다.
MVC 모델은 각각의 역할을 분리하여 개발하므로 코드의 재사용성과 유지보수가 용이해집니다. 또한 프론트엔드와 백엔드 개발자들이 각각 독립적으로 작업할 수 있어 개발 프로세스를 효율적으로 관리할 수 있습니다. 스프링 부트는 MVC 모델을 채택하여 웹 애플리케이션을 구축하면서 이러한 장점을 살릴 수 있도록 도와줍니다.
간단한 스프링 MVC 예제
1. 모델 클래스 생성
회원 정보를 담을 Member 모델 클래스를 생성합니다.
public class Member {
private Long id;
private String name;
// Getters and Setters
}
2. 컨트롤러 생성
MemberController 클래스를 생성하여 회원 정보를 등록하고 조회하는 기능을 구현합니다.
@Controller
public class MemberController {
private List<Member> members = new ArrayList<>();
@GetMapping("/members")
public String listMembers(Model model) {
model.addAttribute("members", members);
return "memberList";
}
@GetMapping("/members/new")
public String createMemberForm(Model model) {
model.addAttribute("member", new Member());
return "createMemberForm";
}
@PostMapping("/members/new")
public String createMember(@ModelAttribute Member member) {
members.add(member);
return "redirect:/members"; // 회원 등록 후 /members 경로로 리다이렉트합니다.
}
}
3. 뷰 생성
뷰는 Thymeleaf 템플릿 엔진을 이용해 만들어집니다. resources/templates 폴더 아래에 memberList.html과 createMemberForm.html 파일을 생성합니다.
memberList.html
<!DOCTYPE html>
<html>
<head>
<title>회원 목록</title>
</head>
<body>
<h1>회원 목록</h1>
<table>
<tr>
<th>ID</th>
<th>이름</th>
</tr>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>
</table>
<a href="/members/new">회원 등록</a>
</body>
</html>
createMemberForm.html
<!DOCTYPE html>
<html>
<head>
<title>회원 등록</title>
</head>
<body>
<h1>회원 등록</h1>
<form method="post" action="/members/new">
<label>이름:</label>
<input type="text" name="name" required/>
<input type="submit" value="등록"/>
</form>
<a href="/members">돌아가기</a>
</body>
</html>
4. 실행
위 코드들을 작성하고 애플리케이션을 실행하면 웹 브라우저에서 http://localhost:8080/members로 접속하면 회원 목록을 확인할 수 있고, http://localhost:8080/members/new로 접속하여 회원을 등록할 수 있습니다.
'Backend > Spring Boot' 카테고리의 다른 글
Spring Boot - 용어 (0) | 2023.08.11 |
---|---|
Spring Boot - 연관관계 매핑 (0) | 2023.07.30 |
Spring Boot - Spring Data JPA 활용 (0) | 2023.07.29 |
Spring Boot - API를 작성하는 다양한 방법 (0) | 2023.07.23 |
Spring boot - VScode로 시작하기 (0) | 2023.07.16 |