
1. 컨트롤러

2. 컨트롤러 구현과정

1. @Controller로 컨트롤러 정의하기
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller // ① Controller 선언
public class Example01Controller {
@RequestMapping(value = "/exam01", method = RequestMethod.GET) // ② URL 매핑
public String requestMethod() { // ③ 반환 타입은 String
return "viewPage01"; // ④ 뷰 이름 반환 (JSP, Thymeleaf 등)
}
}
2. @RestController로 컨트롤러 정의하기
package com.springboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController // ① RestController 선언
public class Example02Controller {
@RequestMapping(value = "/exam02", method = RequestMethod.GET) // ② URL 매핑
public String requestMethod() { // ③ 반환 타입 String
return "@RestController 예제입니다"; // ④ 응답 본문(body)으로 전송
}
}

1. 컨트롤러에 @RequestMapping 적용하기
| 속성 | 타입 | 설명 |
| value | String | 기본 매핑 경로 이름 |
| method | RequestMethod | HTTP 요청 방식 (GET, POST, PUT, DELETE) |
| headers | String | 매핑된 요청의 헤더 |
| name | String | 매핑 이름 지정 |
| params | String | 매핑된 요청 파라미터 |
| path | String | 서블릿 환경만의 경로 매핑 URI |
| consumes | String | 매핑된 요청의 소비 가능한 미디어 유형 |
| produces | String | 매핑된 요청의 생산 가능한 미디어 유형 |
2. 메서드에 @RequestMapping 적용하기
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(value = "/exam03", method = RequestMethod.GET) // 클래스 레벨 매핑
public class Example03Controller {
@RequestMapping // 메소드 레벨 매핑
public String requestMethod() {
return "viewPage03";
}
}
3. @RequestMapping 단순화하기
변형 @RequestMapping
| 애너테이션 | 설명 | method 속성 대응 |
| @GetMapping | GET 요청 매핑 | method=RequestMethod.GET |
| @PostMapping | POST 요청 매핑 | method=RequestMethod.POST |
| @PutMapping | PUT 요청 매핑 | method=RequestMethod.PUT |
| @DeleteMapping | DELETE 요청 매핑 | method=RequestMethod.DELETE |
| @PatchMapping | PATCH 요청 매핑 | method=RequestMethod.PATCH |
1. Model 인터페이스로 메서드 작성하기
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.Model;
@Controller
public class Example06Controller {
@GetMapping("/exam06")
public String requestMethod(Model model) {
model.addAttribute("data1", "Model 예제");
model.addAttribute("data2", "웹 요청 URL은 /exam06 입니다");
return "viewPage";
}
}
2. ModelMap 클래스로 메서드 작성하기
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.ModelMap;
@Controller
public class Example07Controller {
@GetMapping("/exam07")
public String requestMethod(ModelMap model) {
model.addAttribute("data1", "ModelMap 예제");
model.addAttribute("data2", "웹 요청 URL은 /exam07 입니다");
return "viewPage";
}
}
3. ModelAndView 클래스로 메서드 작성하기
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Example08Controller {
@GetMapping("/exam08")
public ModelAndView requestMethod() {
ModelAndView mav = new ModelAndView();
mav.addObject("data1", "ModelAndView 예제");
mav.addObject("data2", "웹 요청 URL은 /exam08 입니다");
mav.setViewName("viewPage");
return mav;
}
}

결과


출처: 송미영,『 스프링 부트 완전 정복 』, 길벗(2024).
Coner Spring1
Editor: Marin
| [Spring 1팀] 8장. 다국어 처리 (0) | 2025.11.21 |
|---|---|
| [Spring 1팀] 7장. 파일 업로드 처리 (0) | 2025.11.14 |
| [Spring 1팀] 6장. 폼 태그 (1) | 2025.11.07 |
| [Spring 1팀] 5장. 요청 처리 메서드의 파라미터 유형 (0) | 2025.10.31 |
| [Spring 1팀] 1-3장. 스프링 부트 소개 & 개발 환경 설정 & 구조 (0) | 2025.10.03 |