Post

02 Controller

02 Controller

1. Controller

1. Controller 설정

1
2
3
4
5
6
7
8
9
@Controller
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "안녕하세요, 스프링 MVC!");
        return "hello"; // 뷰 이름 (hello.jsp 또는 hello.html)
    }
}

2. 애노테이션

1. 클래스 레벨

애노테이션역할
@Controller일반적인 웹 컨트롤러, 뷰 이름을 반환할 때 사용
@RestControllerJSON, XML 등 HTTP 바디 직접 반환 시 사용 (@Controller + @ResponseBody 기능 포함)

2. http 메서드

애노테이션역할
@RequestMapping요청 URL과 HTTP 메서드(GET, POST 등)를 매핑
@GetMappingGET 요청을 처리 (편리한 단축 애노테이션)
@PostMappingPOST 요청을 처리
@PutMappingPUT 요청을 처리
@DeleteMappingDELETE 요청을 처리
@PatchMappingPATCH 요청을 처리

3. 요청 데이터 => 03 MVC - 02 Reqeust&Response

애노테이션역할
@RequestParam쿼리 파라미터 값 매핑
@PathVariableURL 경로 변수 매핑
@RequestBody요청 바디(JSON 등)를 객체로 변환
@ResponseBody반환값을 HTTP 응답 바디로 직접 출력
@ModelAttribute폼 데이터나 모델 객체 바인딩, 뷰에 자동 추가

3. note

1. 서블릿과 컨트롤러

  • 기존 순수 서블릿 방식에서는 URL마다 별도의 서블릿 클래스가 필요했지만
  • 스프링 MVC에서는 애노테이션을 사용해 메소드 단위로 URL 매핑이 가능하므로, 비슷한 기능을 한 클래스 안에 통합해 관리할 수 있음.
항목순수 서블릿스프링 MVC
클래스 단위URL마다 별도 서블릿 클래스 필요한 Controller 클래스에 여러 메소드 매핑 가능
매핑 단위클래스 단위(@WebServlet URL 지정)메소드 단위(@RequestMapping, @GetMapping 등)
코드 관리기능 유사해도 클래스가 많아져 관리 복잡관련 기능을 한 클래스 안에 통합 가능, 유지보수 용이
비즈니스 로직 분리대부분 서블릿 안에 직접 구현Controller → Service 계층으로 분리 가능
확장성새로운 URL마다 클래스 추가 필요메소드 추가만으로 기능 확장 가능
애노테이션 활용제한적, 주로 @WebServlet풍부한 매핑/설정 애노테이션 활용 가능
This post is licensed under CC BY 4.0 by the author.