스프링에서 사용되는 MVC는 일반적으로 MVC2 패턴을 사용하고 있습니다.
MVC1 패턴은 하나의 뷰 파일(일반적으로 JSP)에서 컨트롤러와 뷰 역할을 모두 할 수 있습니다.
또한 비즈니스 로직이 들어갈 수도 있어 하나의 파일 내에 java 코드와 html 등이 뒤섞이게 됩니다.
이렇게 하나의 파일에 모든 것들이 들어있게 되면 유지보수와 확장성에 문제가 발생하기 때문에 MVC2 패턴을 사용하게 됩니다.
MVC2 패턴은 역할을 분리하기 위하여 컨트롤러 영역과 모델 영역, 뷰 영역이 별도로 분리되어 있습니다.
먼저 클라이언트로부터 모든 uri 요청이 오면 웹서버가 요청을 받아서 이것이 정적 자원을 처리하는지 동적으로 처리하는지 판단합니다.
여기서 웹서버는 Apache HTTP Server, Nginx 등이 있고 톰캣이 아닙니다.
웹서버가 정적 자원을 처리하고, 동적 자원 처리를 위하여 톰캣으로 전달합니다.
톰캣은 어떤 서블릿을 사용할지 결정하는 서블릿 컨테이너입니다.
동적 자원 처리를 위하여 스프링 프레임워크의 디스패쳐 서블릿으로 전달합니다.
만약 웹서버를 사용하지 않는다면, 톰캣이 이러한 웹서버의 기본기능(정적 자원 처리)을 합니다.
톰캣의 DefaultServlet이 이러한 기능을 제공합니다.
따라서 스프링과 톰캣만 있어도 웹페이지를 만들수 있습니다.
다음으로 디스패쳐 서블릿은 받은 요청을 어떤 컨트롤러에 매핑할지 핸들러 매핑에게 물어봅니다.
핸들러 매핑에서 어떤 컨트롤러를 사용할지 알게되면 해당 컨트롤러에 요청을 전달합니다.
컨트롤러에 요청이 전달되면 서비스 영역에서 비즈니스 로직이 처리되고, 비즈니스 로직에서 DB 접근이 필요하다면 모델 객체를 이용하여 DB에서 값을 가져옵니다.
이렇게 받아온 모델과 모델이 필요한 뷰 영역이 있는 경우 뷰 이름을 디스패쳐 서블릿에 전달합니다.
만약 단순 리다이렉션이나 DB접근이 필요없는 경우에는 ②에서 모델을 만들지 않고 바로 ④로 넘어갑니다.
디스패쳐 서블릿은 전달받은 뷰 이름을 토대로 뷰리졸버를 확인하여 실제 뷰로 변환하고, 모델을 해당 뷰로 전달합니다.
이렇게 만들어진 뷰를 응답하여 클라이언트에게 전달합니다.
'TOOL > SPRING' 카테고리의 다른 글
카카오 로그인 Rest API 적용하기 (0) | 2023.09.19 |
---|---|
STS4 에서 Darkest Dark Theme 쓰기(일반 설치가 안되는 경우 수동설치) (4) | 2023.06.02 |
STS3 에서 Darkest Dark Theme 쓰기(feat. 인텔리제이 테마) (3) | 2023.05.23 |
남에게 설명할 때 비로소 자신의 지식이 된다.
포스팅이 도움되셨다면 하트❤️ 또는 구독👍🏻 부탁드립니다!! 잘못된 정보가 있다면 댓글로 알려주세요.