5. 웹 개발 기초
5.1. 스프링 MVC 소개
스프링 MVC는 스프링 프레임워크에서 웹 애플리케이션을 개발하기 위한 모듈입니다. Model-View-Controller(MVC) 패턴을 따르며, 이를 통해 개발자는 웹 애플리케이션의 구성 요소를 명확하게 구분할 수 있습니다. 스프링 부트는 스프링 MVC를 쉽게 사용할 수 있는 자동 구성을 제공합니다.
5.2. 컨트롤러와 뷰
컨트롤러는 사용자의 요청을 처리하고 적절한 응답을 생성하는 역할을 합니다. 스프링 MVC에서 컨트롤러는 @Controller 어노테이션을 사용하여 선언하며, 요청을 처리하는 메서드에는 @RequestMapping 또는 @GetMapping, @PostMapping 등의 어노테이션을 사용합니다.
예를 들어, 다음 코드는 "Hello, Spring Boot!" 메시지를 반환하는 컨트롤러를 생성합니다.
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring Boot!");
return "hello";
}
}
뷰는 사용자에게 보이는 화면을 담당합니다. 스프링 MVC에서 뷰는 JSP, Thymeleaf, FreeMarker 등 다양한 템플릿 엔진을 사용할 수 있습니다. 스프링 부트는 Thymeleaf를 기본적으로 지원하며, 의존성을 추가하면 사용할 수 있습니다.
예를 들어, 위의 컨트롤러에서 반환한 hello는 Thymeleaf 템플릿인 hello.html 파일과 매핑됩니다.
5.3. 폼 데이터 처리
스프링 MVC는 웹 폼 데이터 처리를 위한 기능을 제공합니다. 예를 들어, 사용자가 작성한 게시물을 저장하는 폼 처리를 다음과 같이 구현할 수 있습니다.
먼저 게시물 엔티티를 생성합니다.
public class Post {
private Long id;
private String title;
private String content;
// 생성자, getter, setter 등
}
그리고 게시물 작성 폼을 처리하는 컨트롤러를 작성합니다.
@Controller
public class PostController {
@GetMapping("/post/new")
public String newPost(Model model) {
model.addAttribute("post", new Post());
return "post/new";
}
@PostMapping("/post")
public String savePost(@ModelAttribute Post post) {
// 저장 로직 구현
return "redirect:/posts";
}
}
이렇게 구현된 컨트롤러는 /post/new 경로에서 게시물 작성 폼을 보여주고, 폼을 전송하면 /post 경로로 POST 요청을 받아 게시물을 저장합니다.
마지막으로 Thymeleaf 템플릿을 사용하여 게시물 작성 폼을 구현합니다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>New Post</title>
</head>
<body>
<h1>New Post</h1>
<form th:action="@{/post}" th:object="${post}" method="post">
<div>
<label for="title">Title:</label>
<input type="text" id="title" th:field="*{title}" />
</div>
<div>
<label for="content">Content:</label>
<textarea id="content" th:field="*{content}"></textarea>
</div>
<button type="submit">Save</button>
</form>
</body>
</html>
이상으로 스프링 부트를 사용한 웹 개발 기초에 대해 알아보았습니다. 다음 섹션에서는 RESTful API 개발 기초에 대해 알아보겠습니다.
2023.05.03 - [프로그래밍/스프링부트(Spring Boot) 기초부터 ~] - [스프링 부트(SpringBoot)] 데이터베이스 연동 기초
'GD's IT Lectures : 기초부터 시리즈 > 스프링부트(Spring Boot) 기초부터 ~' 카테고리의 다른 글
[스프링 부트(SpringBoot)] 간단한 보안 적용 (0) | 2023.05.03 |
---|---|
[스프링 부트(SpringBoot)] RESTful API 개발 기초 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 데이터베이스 연동 기초 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 스프링 부트의 핵심 기능 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 환경 설정 및 프로젝트 생성 (0) | 2023.05.03 |
댓글