[Spring] MVC

kang·2024년 8월 12일

SPRING

목록 보기
4/22

MVC란 Model-View-Controller 의 약자
소프트웨어 디자인 패턴 중 하나


Model

  • 데이터와 비즈니스 로직을 담당
  • 데이터 베이스에 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행함

View

  • 사용자 인터페이스 담당
  • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현함

Controller

  • model과 view사이의 상호작용을 조정하고 제어함
  • 사용자의 입력을 받아 model에 전달, model의 결과를 바탕으로 view를 업데이트 함.

🕹️ MVC 패턴은 코드의 재사용성과 유지보수성을 높이고, 개발자들 간의 협업을 용이하게 해줌.


Spring MVC란?

Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있다’

DispatcherServlet이란?

1. Servlet이 뭐야?

-> Servlet은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함.

/동작/

  • 사용자가 서버에 HTTP Request(API요청)을 함
  • 요청을 받은 Servlet컨테이너는 객체를 생성함.
    • HttpServletRequest (규칙에 맞춰서 요청함)
    • HttpServletResponse (요청을 받았으니까 응답을 해야함)
  • 요청에 매칭되는 Servlet에 대한 정보가 web.xml에 담겨있음

  • Servlet은 설정된 정보를 통해 어떤 Servlet에 대한 요청인지 찾음.

  • 찾은 Servlet에서 해당 서비스 method를 호출함

  • HTTP요청이 어떤 메서드 방식인 지 확인함
    (Http요청은 처음 HttpServletRequest에 담겨있음)

    • get방식
    • post방식
    • put방식 등...
  1. Servlet은 대충 알겠는데 그래서 DispatcherServlet은 뭐야?


Dispatcher 뭔가 전달하는 서블릿

  • client에서 http요청이 들어오면 DispatcherServlet객체가 요청을 분석함

  • DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해줌.

[Sample]
💡 GET /api/hello → HelloController 의 hello() 함수
💡 GET /user/login → UserController 의 login() 함수
💡 GET /user/signup → UserController 의 signup() 함수
💡 POST /user/signup → UserController 의 registerUser() 함수

  • Handler mapping에는 API path(url)와 Controller 메서드가 매칭되어 있음.
@RestController
public class HelloController {
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello World!";
    }
}
  • API path 즉, URL을 Controller에 작성하는 방법은 @Controller 애너테이션이 달려있는 클래스를 생성한 뒤 @GetMapping 처럼 요청한 HTTP Method 와 일치하는 애너테이션을 추가한 메서드를 구현하기
  • URL은 @GetMapping("/api/hello") 이처럼 해당 애너테이션의 속성값으로 전달해주면 됩니다.
  • 해당 메서드명은 URL을 매핑하는데 영향을 미치지 않음으로 자유롭게 정해도 상관 없습니다.

-> 이제는 직접 Servlet을 구현하지 않아도 DispatcherServlet에 의해 간편하게 HTTP 요청을 처리할 수 있음

  • Controller → DispathcerServlet
    : 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다

  • DispatcherServlet → Client
    : ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.

profile
뉴비 개발 공부중

0개의 댓글