MVC 모델이란 '프로그램의 처리 역할을 나누어서 프로그램을 작성하는 방법' 으로 주로 웹 시스템 개발에 사용된다.
역할은 모델 ( Model ) , 뷰 ( View ) , 컨트롤러 ( Controller ) 의 세 종류로 분류한다.
모델
모델은 시스템에서 비즈니스 로직을 담당한다.
비즈니스 로직 ? : 예를 들어, 회원 가입 중 사용자가 입력한 아이디의 중복 확인에서 중복 여부를 회원 데이터베이스에서 확인하고 화면에 표시할 수 있게 전달하는 것
뷰
사용자 입력과 결과 출력 등 시스템에서 표현 부분 담당하며, 웹 애플리케이션에서는 화면을 담당한다.
컨트롤러
모델과 뷰를 제어하는 역할. 사용자가 입력한 내용을 뷰에서 받고 받은 데이터를 기준으로 모델에 내용을 전달하거나, 모델에서 받은 데이터를 뷰에 전달해서 화면에 표시하는 역할
웹 애플리케이션을 간단하게 만들 수 있는 기능을 제공하는 프레임워크
주요 기능으로 화면 전환이나 사용자가 사용하는 브라우저와 서버 간의 입출력 데이터 전달을 단순화하는 등 기능이 있다.
@Controller
@RequestMapping("hello")
public class HelloViewController {
@GetMapping("view")
public String helloView() {
// 반환값으로 뷰의 이름을 돌려줌
return "hello";
}
}
@Controller
인스턴스 생성 어노테이션
클라이언트와 데이터 입출력을 제어하는 애플리케이션 레리어의 컨트롤러 부여
요청 핸들러 메서드의 반환값을 뷰 이름으로 하여 템플릿 엔진의 뷰가 응답 HTML을 생성한다.
@RequestMapping
컨트롤러의 요청 핸들러 메서드와 URL을 매핑한다.
// value 속성에 처리 대상의 URL 경로를 매핑
@RequestMapping(value = "hello")
// value 속성만 지정하는 경우 생략 가능
@RequestMapping("hello")
// URL 경로를 여러 개 지정 가능
@RequestMapping(value = { "hello", "helloSpring" })
// method 에서 HTTP 메서드 'GET'을 지정
@RequestMapping(value = "hello", method = RequestMethod.GET)
// 메서드 여러 개 지정 가능
@RequestMapping(value = "hello", method = { RequestMethod.GET, RequestMethod.POST })
@GetMapping
@RequestMapping 의 GET 요청용 어노테이션
value 속성은 같지만 method 속성은 없다.
// value 속성만 있다면 생략 가능
@GetMapping("hello")
// URL 여러 개 지정 가능
@GetMapping(value = { "hello", "helloSpring" })
@PostMapping
@RequestMapping 의 POST 요청용 어노테이션
value 속성은 같지만 method 속성은 없다.
// value 속성만 있다면 생략 가능
@PostMapping("hello")
// URL 여러 개 지정 가능
@PostMapping(value = { "hello", "helloSpring" })