스프링 프레임 워크에서는 Model(데이터)과 View(화면) 그리고 Controller(제어) 세 가지 요소들이 서로 분리되어 있어서 각각의 역할을 수행하게 됩니다. 이중에서도 컨트롤러 부분을 좀 더 자세하게 살펴봐야 합니다.
MVC패턴 자체는 효율적으로 협업하기 위한 개발 방법론입니다.
MVC 1과 MVC2가 존재합니다.
두 개발 방법론에는 장단점이 있겠지만 보통 View와 Controller를 따로 구분해 사용하는 mvc2패턴을 많이 사용합니다.
mvc2패턴은 널리 표준으로 사용되는 패턴이죠
view에서 컨트롤러에 대해서 어떠한 정보도 알지 말아야 한다는 규칙이 있습니다.
우선 간단하게 설명하자면
model | 데이터를 다루는 코드를 짭니다. 효율적으로 db와 주고받는 코드의 알고리즘을 다룹니다 | ||
controller | view에서 보이게 view코드로 jsp로 던져주고 | ||
view | 사용자에게 보여지는 곳 | 데이터 보기좋게 꾸며두는 곳 |
모델 - 뷰 -컨트롤러라는 말 그대로
model = 데이터
view = 화면
controller = 제어
이렇게 이해하시면 쉽습니다.
각 요소들을 구분해서 설계하면 유지보수하기 편리하다는 장점이 있지만 코드가 길어지고 가독성이 떨어진다는 단점이 있죠. 그래서 나온 것이 바로 MVC패턴입니다.
Model😶🌫️
model클래스는 우리가 만든 객체 정보를 저장하는 공간입니다. 즉, 데이터베이스나 파일 등 외부로부터 값을 받아와서 담아두는 곳이죠. 예를 들어 만약 내가 학생이라면 이름, 나이, 학번 등등 여러 가지 정보를 가지고 있겠죠? 이러한 정보들을 모두 담아서 보관하는 장소가 바로 model인 거죠.
view🤦♀️
view클래스는 실제 보이는 화면을 만들어주는 클래스라고 생각하시면 돼요. 자바스크립트 같은 웹 프로그래밍 언어처럼 HTML코드를 이용해서 화면을 구성한다고 보시면 되는데요. 대표적인 예시로는 JSP/Servlet 같은 웹프로그래밍 언어가 있겠네요.
Controller😁
controller클래스는 위 두 개의 클래스 사이에서 연결고리 역할을 한다고 보시면 됩니다. 쉽게 말해서 중간 다리 역할을 해준다고 생각하시면 됩니다. spring 프레임워크 안에서의 모든 동작은 컨트롤러에서부터 시작되기 때문에 매우 중요한 클래스입니다.
mvc를 구성하는 요소를 표로 설명드리겠습니다.
구성 요소 | 설명 |
디스패처 서블릿(DispatcherServlet) | 웹에서 요청을 전달받습니다. 전달받은 요청을 컨트롤러에 전달하고, 컨트롤러가 반환한 결과 값을 뷰에 전달하여 알맞은 응답을 생성합니다. |
핸들러 매핑(HandlerMapping) | 클라이언트가 요청한 URL을 어떤 컨트롤러가 처리할지 결정합니다. |
컨트롤러(Controller) | 클라이언트의 요청을 처리한 후 결과를 반환합니다. 응답 결과에서 보여 줄 데이터를 모델에 담아 전달합니다. |
모델 앤 뷰(ModelAndView) | 컨트롤러가 처리한 결과 정보와 뷰 선택에 필요한 정보를 담습니다. |
뷰 리졸버(ViewResolver) | 컨트롤러의 처리 결과를 보여 줄 뷰를 결정합니다. |
뷰(View) | 컨트롤러의 처리 결과 화면을 생성합니다. 주로 JSP 파일로 클라이언트에 응답 결과를 전송합니다. |
'Back End > Spring' 카테고리의 다른 글
Spring Boot 스프링 부트 테스트를 위한 주요 어노테이션 활용 방법 @Test @After @Before (2) | 2023.07.21 |
---|---|
Spring 프로젝트 구조 web.xml, root-context, servlet-context, 프로젝트 환경설정 파일 (0) | 2023.06.28 |
Spring 프로젝트 구조 mvc 프로젝트 폴더 구조, 스프링 동작 순서 (0) | 2023.06.28 |
Spring Java JDK 환경변수 설정시 JAVA_HOME으로 변수를 만드는 이유 (0) | 2023.06.22 |
Spring 스프링이란, POJO란, 비즈니스 로직이란, AOP 란 스프링 이론들 (0) | 2023.06.22 |