Model
스프링 부트(Spring Boot)는 자바 기반의 웹 애플리케이션을 개발하기 위한 프레임워크로서, 스프링(Spring) 프레임워크를 기반으로 하며 개발자들이 더 간편하게 웹 애플리케이션을 구축하고 실행할 수 있도록 도와줍니다. 스프링 부트는 웹 애플리케이션의 여러 측면을 다루는 다양한 기능과 클래스를 제공하는데, 그 중에서도 Model 클래스는 웹 애플리케이션의 뷰(View)와 컨트롤러(Controller) 사이에서 데이터를 전달하는 역할을 합니다.
Model은 스프링의 MVC 아키텍처(Model-View-Controller)에서 사용되는 개념 중 하나로, 다음과 같은 역할을 수행합니다:
- 데이터 전달: Model은 컨트롤러(Controller)에서 처리한 데이터를 뷰(View)로 전달하는 데 사용됩니다. 이는 클라이언트에게 보여질 데이터나 웹 페이지의 내용 등을 포함합니다.
- 데이터 저장: Model은 뷰에서 전달된 데이터를 임시로 저장하는 역할을 수행합니다. 이렇게 저장된 데이터는 뷰에서 필요한 경우에 사용될 수 있습니다.
- 뷰에 데이터 제공: 뷰는 Model에서 제공한 데이터를 사용하여 웹 페이지를 동적으로 구성하고, 사용자에게 적절한 정보를 보여줍니다.
스프링 부트에서 Model 객체는 주로 컨트롤러 메서드의 매개변수로 선언되며, 메서드 내에서 데이터를 담고 뷰로 전달하는 역할을 수행합니다. 일반적으로 Model은 키-값 쌍으로 데이터를 저장하며, 이 데이터는 뷰에서 해당 키를 사용하여 접근할 수 있습니다.
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/hello")
public String hello(Model model) {
String message = "Hello, Spring Boot!";
model.addAttribute("greeting", message); // 데이터를 Model에 추가
return "helloPage"; // 뷰의 이름을 반환
}
}
src/
└── main/
├── java/
│ └── com/
│ └── example/
│ ├── MyApplication.java
│ ├── MyController.java
├── resources/
│ └── application.properties
└── webapp/
└── WEB-INF/
└── views/
└── helloPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h1>${greeting}</h1>
</body>
</html>
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/hello")
public String hello(Model model) {
String message = "Hello, Spring Boot!";
model.addAttribute("greeting", message);
return "helloPage";
}
}
application.properties
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
SpringBoot 작성 순서.
- VO (Value Object) 작성:
- 데이터를 저장하고 전달하기 위한 객체를 정의하는 클래스를 작성합니다.
- 필요한 데이터 필드와 getter/setter 메서드를 포함하여 작성합니다.
- 주로 데이터베이스의 테이블과 매핑될 수 있습니다.
- DAO (Data Access Object) 작성:
- 데이터베이스와의 상호 작용을 처리하는 클래스를 작성합니다.
- 데이터베이스에 데이터를 조회, 삽입, 갱신, 삭제하는 메서드를 작성합니다.
- 주로 JPA, MyBatis 등의 ORM(Object-Relational Mapping) 기술을 사용하여 구현합니다.
- Service 클래스 작성:
- 비즈니스 로직을 수행하는 서비스 클래스를 작성합니다.
- DAO를 이용하여 데이터베이스와의 상호 작용을 호출하고, 비즈니스 로직을 구현합니다.
- 트랜잭션 처리, 데이터 가공, 복잡한 비즈니스 규칙 등을 처리합니다.
- 컨트롤러(Controller) 클래스 작성:
- 사용자의 요청을 처리하는 컨트롤러 클래스를 작성합니다.
- @Controller 어노테이션을 추가하여 컨트롤러임을 명시합니다.
- 각 요청에 대한 처리 메서드를 작성하고, Service 레이어를 호출하여 비즈니스 로직을 수행합니다.
- 필요한 경우에는 모델(Model)을 생성하고 뷰 이름을 반환합니다.
- 뷰(View) 템플릿 작성:
- 사용자에게 보여질 웹 페이지의 모습을 정의하는 뷰 템플릿을 작성합니다.
- Thymeleaf, JSP, Freemarker 등을 사용하여 뷰 템플릿을 구현합니다.
- 스프링 설정 및 라우팅:
- application.properties나 application.yml 파일을 통해 애플리케이션 설정을 구성합니다.
- 컨트롤러의 요청 매핑과 뷰 리졸버 설정을 등록합니다.
- 실행 및 테스트:
- 애플리케이션을 실행하여 웹 서버를 시작합니다.
- 웹 브라우저나 API 클라이언트를 통해 컨트롤러가 응답하는지 테스트합니다.
pom.xml에 라이브러리 설정 필요한 것만 세팅이 안되어 있으면 오류.
web, test, db, jsp...
시험볼 때 tiles setting 가져오면 안됨. devProject: pom.xml, 내용은 spring쪽
가장기본적인것, control 단과 뷰단을 만들고 매핑해서 보이면 service, dao로 다음으로 xml
control단, 뷰(.jsp)로 갈수 있는 메서드 하나(매핑)만 만들고 뷰단이 보이는지
패키지 잘못쓰면 삭제 후 다시 만들기
패키지 하위에 만들기
5번하기 전에 Mybatis 설정파일만 이름을 다줘서 세팅
config는 mybatis 설정파일
그다음 properties 수정