웹 컨트롤러

148june 2025. 2. 12. 14:36

Spring MVC에서 웹 컨트롤러를 생성하는 기본적인 과정은 다음과 같습니다.


1. 프로젝트 준비

Spring Boot 프로젝트를 생성하고 실행하는 방법은 이미 설명했으므로, 바로 컨트롤러 생성으로 넘어갑니다.


2. 웹 컨트롤러 생성

Spring MVC에서 컨트롤러는 @Controller 또는 @RestController 어노테이션을 사용하여 정의합니다.

  • @Controller → 뷰(.html 파일) 반환 가능
  • @RestController → JSON 응답 반환

1) 기본 컨트롤러 (@Controller 사용) src/main/java/com/example/demo/controller/WebController.java 파일 생성 후 다음 코드 추가:

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/web")
public class WebController {

    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "hello";  // `src/main/resources/templates/hello.html` 뷰 반환
    }
}

2) 템플릿(뷰) 추가 (Thymeleaf 사용)
src/main/resources/templates/hello.html 파일 생성 후 다음 코드 추가:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1 th:text="${message}">Hello, Spring MVC!</h1>
</body>
</html>

Hello, Spring MVC!

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public Map<String, String> hello() {
        return Map.of("message", "Hello, Spring MVC API!");
    }
}

3. REST API 컨트롤러 (@RestController 사용)

뷰 없이 JSON 데이터를 반환하려면 @RestController를 사용합니다.

src/main/java/com/example/demo/controller/ApiController.java 파일을 만들고 다음 코드 추가:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public Map<String, String> hello() {
        return Map.of("message", "Hello, Spring MVC API!");
    }
}

4. 애플리케이션 실행 후 확인

1) 웹 페이지 확인

브라우저에서 다음 URL 접속:

http://localhost:8080/web/hello

2) REST API 확인

Postman 또는 브라우저에서 다음 URL 접속:

http://localhost:8080/api/hello

응답:

{
    "message": "Hello, Spring MVC API!"
}

5. 추가 개발

  • 폼 데이터 처리 → @PostMapping 사용
  • DB 연동 → Spring Data JPA 활용
  • 서비스 계층 분리 → @Service 추가

필요한 부분이 있으면 질문하세요! 🚀