아래 글은 스프링 프레임 워크 첫걸음 책을 기반하여 작성한 글입니다.
5-1 MVC 모델 알아보기
(1) MVC 모델이란?
: 프로그램의 처리 역할을 나누어서 프로그램을 작성하는 방법!
전에 데이터 베이스 살짝 공부했을 때 들어본 기억이 난다..!!
1️⃣ 모델(Model: M)
: 비지니스 로직의 내용을 작성하는 역할
2️⃣ 뷰(View: V)
: 입력/출력 등을 표시하는 역할
3️⃣ 컨트롤러(Controller: C)
: 모델과 뷰를 제어하는 역할
(2) MVC 모델의 개요와 이점
- 역할 분담을 통해 효율적인 개발 가능
- 개발하는 엔지니어의 분업화가 용이
- 설계 변경에 유연하게 대응 가능
5-2 스프링 MVC 알아보기
(1) 스프링 MVC란?
: 웹 애플리케이션을 간단하게 만들 수 있는 기능을 제공하는 프레임워크
- 스프링 MVC의 구성 요소:
Controller, View, Model + DispatcherServlet, 서비스 처리
- DispatcherServlet: 클라이언트로부터 모든 요청을 받는 프런트 컨트롤러
- 서비스 처리: 데이터베이스에 접속해 데이터를 취득, 가공 등 실행한다. 개발자가 설계하고 구현.
(1) 요청을 받고 응답을 보낼 때까지의 흐름
① DispatcherServlet이 클라이언트로부터 요청을 받는다.
② DispatcherServlet가 요청받은 핸들러 메서드를 호출한다.(컨트롤러를 통해)
③ 컨트롤러는 비지니스 로직 처리를 호출하고 처리결과를 받는다.
④ 처리 결과를 모델로 설정하고 뷰 이름을 반환한다.
⑤ 반환된 뷰 이름을 받아 DispatcherServlet이 뷰 이름에 대응하는 뷰에 대해 화면 표시 처리를 의뢰한다.
⑥ 클라이언트가 응답을 받고 브라우저에 화면이 표시된다.
5-3 스프링 MVC 사용해보기
(1) 스프링 MVC 프로그램 만들기
01 프로젝트 생성
02 컨트롤러 생성
// HelloViewController 클래스
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping
public class HelloViewController {
@GetMapping("view")
public String helloView(){
//반환값으로 뷰의 이름을 돌려줌
return "hello";
}
}
@Controller: 애플리케이션 레이어의 컨트롤러 부여.
@RequestMapping: 클래스나 메서드에 부여. 요청 핸들러 메서드와 URL을 매핑하는 역할. 속성은 value와 method.
ex. @RequestMapping(value = "hello", method = RequestMethod.GET)
@GetMapping: @RequestMapping의 GET 요청용 어노테이션. 속성은 value
ex. @GetMapping("hello")
@PostMapping: @PostMapping의 POST 요청용 어노테이션. 속성은 value
ex. @PostMapping(value = {"hello", "hellospring"})
03 URL 매핑
HelloViewController 클래스는
클래스에 @RequestMapping("hello") 어노테이션을 부여하고,
요청 해들러 메서드에 @GetMapping("view") 어노테이션을 부여했다.
따라서, 클라이언트가 URL(http://localhost:8000/hello/view)로 GET 메서드를 보내면 HelloViewController 클래스의 helloView 메서드가 호출된다.
04 뷰 생성
템플릿 엔진을 사용하는 경우 '뷰'를 두는 곳이 지정되어, 아래와 같은 규칙을 지켜야한다.
- resource/templates 폴더 밑에 뷰를 생성한다.
- 뷰가 많이 필요한 경우에는기능별로 폴더를 만들어서 보관한다.
- 폴더를 나눈 경우는 templates 폴더 이하의 폴더명을 요청 핸들러 메서드의 반환값에 지정해야한다.
- CSS나 javascript 등은 resources/static 폴더에 배치한다.
<!-- src/main/resources/templates/hello.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>View Sample</title>
</head>
<body>
<h1>Hello View!!!</h1>
</body>
</html>
05 실행과 확인
실행 후 톰캣 서버를 정상적으로 기동했다는 메시지를 확인할 수 있다.
그러면 http://localhost:8000/hello/view에 접속했을 때 작성한 html 파일이 열려야하는데 열리지 않았다,,
두가지 실수를 했다,,!
하나는 포트 번호를 8080으로 들어가야하는데 8000으로 했고..^^
다른 하나는 HelloViweController 클래스에 @RequestMapping에 value값을 안 주었다..ㅎㅎ
접속 URL을 http://localhost:8080/hello/view로,
코드를 아래와 같이 고쳤더니 원하는 결과가 나왔당 ㅎ~ㅎ
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("hello")
public class HelloViewController {
@GetMapping("view")
public String helloView(){
//반환값으로 뷰의 이름을 돌려줌
return "hello";
}
}
'Back-end > Spring' 카테고리의 다른 글
[Spring] chapter07 요청 파라미터 취득하기 (0) | 2023.07.30 |
---|---|
[Spring] chapter06 템플릿 엔진 알아보기 (2) | 2023.07.25 |
[Spring] chapter04 데이터베이스 작업 (0) | 2023.07.21 |
[Spring] chapter03 스프링 프레임워크의 핵심 기능 알아보기 (0) | 2023.07.13 |
[Spring] chapter02 기초 지식 배우기 (1) | 2023.07.11 |