Post

Spring MVC 패턴

### MVC 패턴이란? MVC패턴은 Model-View-Controller의 약자로, 역할 분담 패턴이다. Model은 데이터 담당, View는 화면 담당, Controller는 모델과 뷰 사이에 중재자 역할을 한다. 마치 음식점에서 웨이터, 요리사, 매니저가 일을 분담하는 것과 같다.

#### Controller(컨트롤러) 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제로 업무를 수행하는 모델 컴포넌트를 호출한다. 또한 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공하고, 모델이 업무를 마치면 그 결과를 뷰에게 전달한다.

#### Model(모델) 컨트롤러가 호출할 때, 요청에 맞는 역할을 수행한다. 비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분이다. 비즈니스 로직이란 업무에 필요한 데이터처리를 수행하는 응용프로그램의 일부라고 할 수 있다. DB에 연결하고 데이터를 추출하거나 저장, 삭제, 업데이트, 변환 등의 작업을 수행한다. 상태의 변화가 있을 때 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 한다.

#### View(뷰) 컨트롤러로부터 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 일을 한다. 만들어진 화면을 웹 브라우저에 전송하여 웹브라우저가 출력하게 하는 것이다. 화면에 표시되는 부분으로 추출한 데이터나 일반적인 텍스트 데이터를 표시하거나 입력폼 또는 사용자와의 상호작용을 위한 인터페이스를 표시하는 영역이다. #### MVC 구동 원리 출처 : https://osy0907.tistory.com/63

MVC 패턴은 클라이언트 - 서버 구조로 요청을 하면 그에 맞는 응답을 하는 구조를 기본으로 하고 있다.

①. Web BrowserWeb Server에 웹 애플리케이션 실행을 요청한다. ②. Web Server는 들어온 요청을 처리할 수 있는 Controller를 찾아서 요청을 전달한다. ③. ControllerModel 자바 객체를 호출한다. ④. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성한다. ⑤. 업무 수행을 마친 결과값을 Controller에게 반환한다. ⑥. Controller는 모델로부터 받은 결과값을 View에게 전달한다. ⑦. View(JSP파일)은 전달받은 값을 참조하여 출력할 결과 화면을 만들고 Controller에게 전달한다. ⑧. View로부터 받은 화면을 Web Server에게 전달한다. ⑨. Web Browser는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다.

#### MVC패턴의 장점은? 각각 모듈의 역할이 명확해지면서 코드의 유지보수가 쉬워지고, 개발자-퍼블리셔-디자이너 간 협업이 원활해진다.

#### MVC패턴 예제

기본설정

  1. Spring MVC의 의존성을 추가
  2. DispatcherServlet을 web.xml에 추가
  3. Spring Application Context를 생성

#### Spring MVC에 대한 의존성을 추가

1
2
3
4
5
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.1.4.RELEASE</version>
</dependency>

DispatcherServlet을 web.xml에 추가

1
2
3
4
5
6
7
8
9
 <servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

Spring Application context 생성

1
2
3
4
5
6
7
8
9
10
11
<beans> <!-- Schema Definition removed --> 
    <context:component-scan base-package="me.bosuksh.springmvc" />
    <mvc:annotation-driven />
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>
This post is licensed under CC BY 4.0 by the author.