1. Spring Web이란?
- Spring Web은 웹 애플리케이션 개발을 위한 모듈, HTTP 요청과 응답을 처리하는 기능을 제공
- 주요 컴포넌트 :
- Spring MVC(Model-View-Controller) :
- 웹 애플리케이션의 구조적 설계 지원
- REST API 개발 :
- JSON, XML과 같은 데이터 형식으로 클라이언트와 서버 간 통신을 간소화
- Handler와 Controller :
- URL 요청을 처리하고 응답 데이터를 생성
- Spring MVC(Model-View-Controller) :
2. Spring Boot와 Spring Web
Spring Boot는 Spring Web 모듈을 내장하여 설정 작업을 자동화한다.
⇒ 최소한의 설정으로 HTTP 서버, REST API, HTML 렌더링 등을 쉽게 구현 가능
- 내장 서버 :
- tomcat, jetty같은 웹 서버가 내장되어 별도의 설치 및 설정 없이 애플리케이션 실행 가능/
- 자동 설정 :
- Spring Boot Starter를 통해 간단히 Spring Web을 설정할 수 있음
- 빠른 개발 :
- 컨트롤러 생성, REST API 설계 등 기본 웹 개발 작업을 쉽게 처리 가능.
3. Spring Web 주요 기능
3.1 Spring MVC
- HTTP 요청을 처리하고, 클라이언트에 데이터를 반환하거나 HTML을 렌더링하는 MVC 구조를 지원.
구성 요소 | 설명 |
Controller | 클라이언트의 요청을 처리하고, 데이터를 반환하거나 뷰(View)로 전달. |
Model | 컨트롤러와 뷰 사이에서 데이터를 전달. |
View | 클라이언트에 표시할 UI를 생성 (예: Thymeleaf, JSP, Mustache 등). |
3.2 REST API 개발
Spring Web은 RESTful 서비스 개발을 위한 다양한 기능을 제공.
구성 요소 | 설명 |
@RestController | HTTP 요청 처리 및 JSON, XML 데이터를 반환. |
@RequestMapping | URL과 HTTP 메서드(GET, POST, PUT, DELETE 등) 매핑. |
@RequestParam, @PathVariable | 요청 매개변수와 경로 변수를 처리. |
@ResponseBody | 응답 데이터를 JSON 또는 XML로 직렬화하여 반환. |
4. Spring Boot에서 Spring Web 시작하기
4.1 Gradle 의존성 추가
Spring Boot 프로젝트에서 Spring Web을 사용하려면 다음 의존성을 추가해야 함
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
4.2 내장 서버
Spring Boot는 기본적으로 Tomcat 웹 서버를 내장하고 있습니다.
- 실행 시 localhost:8080에서 애플리케이션이 실행됩니다.
- 서버 포트를 변경하려면 application.properties에 설정합니다.
server.port=9090
5. Spring Web 기본 구조
5.1 컨트롤러 작성
Spring Web은 @RestController와 @Controller를 통해 HTTP 요청을 처리합니다.
예제: 간단한 REST API
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello(@RequestParam(value = "name", defaultValue = "World") String name) {
return "Hello, " + name + "!";
}
}
- @RestController:
- RESTful 서비스 개발을 위한 컨트롤러.
- 반환값은 자동으로 JSON 형식으로 변환.
- @GetMapping:
- HTTP GET 요청을 처리.
- @RequestParam:
- 쿼리 파라미터를 처리.
URL 호출:
<http://localhost:8080/hello?name=Spring>
응답 결과:
Hello, Spring!
6. Spring Web의 핵심 어노테이션
어노테이션 | 설명 |
@Controller | HTML 렌더링을 처리하는 일반적인 컨트롤러. |
@RestController | REST API 요청을 처리하며 JSON 또는 XML 데이터를 반환. |
@GetMapping | HTTP GET 요청을 특정 메서드에 매핑. |
@PostMapping | HTTP POST 요청을 특정 메서드에 매핑. |
@RequestParam | 쿼리 파라미터를 메서드 파라미터로 매핑. |
@PathVariable | URL 경로의 변수 값을 메서드 파라미터로 매핑. |
@RequestBody | 요청 본문을 객체로 매핑 (주로 JSON 요청 처리). |
@ResponseBody | 메서드의 반환값을 JSON 또는 XML로 변환하여 클라이언트에 반환. |
7. 멘탈 모델 형성
Spring Web은 클라이언트 요청 → 컨트롤러 처리 → 응답 반환의 기본 구조를 따릅니다. 이를 시각적으로 표현하면 다음과 같습니다:
- HTTP Request:
- 클라이언트 요청이 들어옴.
- DispatcherServlet:
- 요청을 적절한 컨트롤러로 라우팅.
- Controller:
- 요청 데이터를 처리하고 응답 데이터를 준비.
- Service Layer:
- 비즈니스 로직 수행.
- View:
- 클라이언트에 반환할 데이터를 생성(HTML 렌더링 또는 JSON).
참고 자료
'Spring' 카테고리의 다른 글
Spring Boot Web 프로젝트에서 JSP 적용하기 (0) | 2024.12.19 |
---|---|
Spring Web - Controller와 RestController (0) | 2024.12.18 |
MyBatis - SqlSession (0) | 2024.12.16 |
MyBatis - Mapper XML (1) | 2024.12.15 |
MyBatis 개요 (0) | 2024.12.15 |