07강 Spring MVC
- 목차
- 내용
- MVC 패턴과 Spring MVC
- Spring MVC 설정
- 학습 목표
- MVC 웹 개발 패턴에 대해 이해하고 Spring MVC 프로젝트를 설정합니다.
- Front Controller 패턴과 ServletDispatcher 에 대해 이해합니다.
- 내용
- SpringMVC
- MVC(Model-View-Controller) 패턴의 개념
- 모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 아키텍처 패턴으로,
MVC 패턴의 주 목적은 Business Logic과 Presentation Logic을 분리하기 위함입니다. - Model : 애플리케이션의 정보 (데이터, 비즈니스 로직 포함)
- View : 사용자에게 제공할 화면
- Controller : 모델과 뷰 사이의 인터페이스 역할.
- 모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 아키텍처 패턴으로,
- SPA : Single Page Application.
HTML 이 클라이언트쪽에 존재하여, JSON 만을 클라이언트에게 반환하여
JSON 데이터만을 바인딩하여 화면을 보는 방법.
- MVC(Model-View-Controller) 패턴의 개념
- 각각의 MVC 컴포넌트의 역할
- Model 컴포넌트
- 데이터 저장소. 사용자에게 출력할 데이터를 다루는 일
- 여러 개의 데이터 변경 작업을 하나의 작업으로 묶는 트랜잭션을 다루는 일.
- DAO 클래스, Service 클래스, Domain 객체, VO 객체
- View 컴포넌트
- 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함.
- 생성된 화면을 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML과 CSS, Java Script를 사용하여 웹 브라우저가 출력할 UI를 만듬
- HTML 과 JSP 를 사용하여 작성할 수 있음.
- 서버 템플리팅 기술. 서버에서 뷰를 만들어 주는 기술이 최근에 다양하게 존재하고 있음.
ex) Thyme leaf.
- Controller 컴포넌트
- 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함.
- 클라이언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 가공하는 일을 할 수 있음.
- 모델이 업무 수행을 완료 하면, 그 결과를 가지고 화면을 생성하도록 뷰에게 전달.
(클라이언트 요청에 대해 모델과 뷰를 결정하여 전달) - Servlet과 JSP를 사용하여 작성할 수 있음.
- Model 컴포넌트
- Front Controller 패턴 아키텍처
- Front Controller 프로세스
- 클라이언트 -> Front Controller(Servlet/JSP) -> 애플리케이션 Controller -> 뷰
- 역할 : 클라이언트의 모든 요청을 받으며 검수하는 역할을 담당.
일반적으로 J2EE, 자바 웹 어플리케이션은 주로 Servlet 으로 구현해왔지만,
스프링에서는 미리 프론트 컨트롤러를 내장시켜 놓고
프론트 컨트롤러에서 적절한 컨트롤러를 호출하도록 설정하여 동작시키고 있음. - Front Conroller 는 적절한 세부 Controller에게 작업을 위임.
- 각각의 애플리케이션 Controller는 클라이언트에게 보낼 뷰를 선택해서
최종 결과를 생성하는 작업. - Front Controller 패턴은 인증이나 권한 체크처럼 모든요청에 대하여
공통적으로 처리해야 하는 로직이 있을 경우 전체적으로 클라이언트 중앙 집중적으로
관리하고자 할 경우에 사용!
(퍼사드 패턴? 벽 같은 느낌!)
- Front Controller 프로세스
- Spring MVC 의 특징
- Spring 은 DI나 AOP 같은 기능 뿐만 아니라,
서블릿 기반의 웹 개발을 위한 MVC 프레임워크를 제공합니다. - Spring MVC는 모델2 아키텍처와 Front Controller 패턴을 프레임워크 차원에서 제공합니다.
- Spring MVC 프레임워크는 Spring을 기반으로 하고 있기 때문에
Spring이 제공하는 트랜잭션 처리나 DI 및 AOP 등을 손쉽게 사용 가능합니다.
- Spring 은 DI나 AOP 같은 기능 뿐만 아니라,
- Spring MVC와 Front Controller 패턴
- 대부분의 MVC 프레임워크들은 Front Controller 패턴을 적용해서 구현합니다.
- Spring MVC도 Front Controller 역할을 하는 DispatcherServlet 이라는 클래스를 계층의 맨 앞단에 놓고,
서버로 들어오는 모든 요청을 받아서 처리하도록 구성되어 있습니다다. - 예외 처리도 Front Controller의 역할입니다.
- Spring MVC의 주요 구성 요소
- DispatcherServlet - 클라이언트에게서 전달 받고, 전달 하는 데이터를 다루는 객체
- Controller - 개발자가 작성하는 로직 컨트롤러 타워.
- HandlerMappinig - 내장되어 있는 객체이며, DispatcherServlet 이 처음으로 요청을 받고, DispatcherServlet이 어떤 컨트롤러를 호출해야 할 지 결정을 해주는 클래스입니다.
- ModelAndView/View - 뷰와 관련된 클래스들. ModelAndView는 리턴타입으로 사용되는 객체이며 바인딩 되어있는 데이터와 뷰 데이터를 포함하고 있음.
- ViewResolver - 컨트롤러에서 뷰를 찾는 데 도움을 주는 클래스.
- Servlet 맵핑과 Servet 설정
- 한글 코딩을 깨지지 않게 하기 위한 encoding 설정
- 실습 내용!
- Spring MVC 라이브러리 설정
- pom.xml 내 Spring MVC 라이브러리 인폴트.
- DispatcherServlet 설정 ... web.xml
- WEB-INF/web.xml 파일 내에 아래 그림과 같이 코드를 설정.
- servlet을 설정하고 파라미터를 설정.
- 파라미터 xml 은 새로 만들어 주어, 아래 맵핑된 url을 탈 때 가져가는 파라미터임.
- Spring MVC 라이브러리 설정
- 스프링 빈 설정 파일.. servlet-context.xml
- <context: component-scan .. >
- namespace 에서 contextnamespace 를 추가해야함.
- <mvc:annotation-driven />
- mvc name space 를 추가해야함.
- ViewResolver 설정
- 아래 그림은 web.xml 에서 사용한 dispatcherServlet 의 init param value 인
servlet-context.xml 파일이며,
뷰 리졸버를 컨테이너에 담는 코드를 포함하고 있음.
- 아래 그림은 web.xml 에서 사용한 dispatcherServlet 의 init param value 인
- <context: component-scan .. >
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - HTTP 파라미터 처리 (0) | 2020.05.30 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - @Controller (0) | 2020.05.30 |
[실전 개발자를 위한 Spring Framework ] 강의 - 계층 구조 (0) | 2020.05.25 |
[실전 개발자를 위한 Spring Framework ] 강의 - DI 개념 (0) | 2020.05.25 |
[실전 개발자를 위한 Spring Framework ] 강의 - IoC (0) | 2020.05.24 |