MVC 패턴
- 애플리케이션을 Model-View-Controller로 역할을 나누어서 개발하는 방식이다
MVC 패턴의 구성
Model
- View에 표현할 데이터
- View에 표현할 데이터를 획득하는 작업
View
- Model이 제공하는 데이터 표현
- Model이 제공하는 데이터를 다양한 컨텐츠 타입으로 변환(HTML 컨텐츠, XML 컨텐츠, JSON 컨텐츠)
Controller
- 사용자와 상호작용
MVC 패턴의 목적
- 데이터와 비즈니스 로직을 시작적인 표현(디자인 요소)으로부터 분리해 줌으로써 화면에 신경 쓰지 않고 데이터나 비즈니스 로직을 구성할 수 있게 한다
MVC패턴의 적용사례
Model2 개발방식
- 웹 애플리케이션 개발에 MVC 패턴을 적용한 것
Spring MVC
- 스프링 MVC는 MVC 패턴의 웹 애플리케이션 개발을 지원하는 다양한 라이브러리를 제공한다
python의 django
- python의 django도 MVC 패턴의 웹 애플리케이션 개발을 지원하는 프레임워크다
struts, struts2
- MVC 패턴의 웹 애플리케이션 지원 프레임워크(spring 등장 이전에 사용했던 프레임워크다)
Model2 개발방식
- 웹 애플리케이션 개발에 MVC 패턴을 적용한 것
Model2 개발방식의 목적
- 자바코드(비즈니스 로직)와 디자인코드(HTML코드)를 분리해서 개발하기 위해서 도입되었다
Model2 개발방식의 구성
Model
- 비즈니스 로직 수행(업무로직 수행), 데이터베이스 엑세스 담당
- 자바 클래스로 구현
View
- 모델이 제공하는 데이터를 표현한다
- JSP로 구현
Controller
- 클라이언트의 HTTP 요청 처리
- 서블릿과 자바 클래스로 구현
프론트 컨트롤러 패턴
요청을 받아들이고, 처리를 조정하며, 적절한 리소스 또는 컴포넌트에 전달하는 중앙 제어 지점을 제공한다. 이러한 방식으로 코드의 모듈화와 유지보수성을 향상시키고, 응용 프로그램의 구조를 단순화할 수 있다
프론트 컨트롤러 구성요소
구성요소 | 역할 |
프론트 컨트롤러(Front Controller) | 클라이언트의 요청을 받아들이는 중앙 컨트롤러의 역할 일반적으로 웹 애플리케이션에서는 URL 라우팅, 요청 파라미터 해석등을 처리 |
디스패처(Dispatcher) | 프론트 컨트롤러에 의해서 호출되며, 요청에 따라서 적절한 핸들러(컨트롤러)를 선택하여 실행한다 |
컨트롤러(Controller) | 실제 비즈니스 로직을 처리하는 구성요소. 프론트 컨트롤러에 의해 호출되어 요청을 처리하고, 필요에 따라 모델을 업데이트하고 뷰를 선택한다 |
모델(Model) | 응용프로그램의 데이터와 비즈니스 로직을 표현한다 컨트롤러가 모델을 조작하여 데이터를 처리하고 업데이트한다 |
뷰(View) | 사용자에게 결과를 표시하는 역할 수행 컨트롤러가 모델을 이용하여 적절한 뷰를 선택하고, 사용자에게 결과를 보여준다 |
프론트 컨트롤러의 동작 순서
- 클라이언트가 요청을 보냈을 때
- 프론트 컨트롤러가 클라이언트의 요청을 접수받는다.
- 프론트 컨트롤러는 클라이언트의 요청을 분석해서 적절한 요청핸들러 메소드를 실행한다.
- 요청핸들러 메소드는 컨트롤러 클래스에 정의된 메소드다.
- 요청핸들러 메소드는 클라이언트의 요청을 실질적으로 처리하는 메소드다.
- 요청핸들러 메소드는 클라이언트의 요청을 처리하기 위해서 업무로직을 호출하고, 데이터를 획득한다.
- 요청핸들러 메소드는 획득된 데이터를 뷰에 전달하기 위해서 요청객체에 속성으로 저장한다.
- 요청핸들러 메소드는 내부이동할 JSP 페이지 경로를 반환한다.
- 프론트컨트롤러는 요청핸들러 메소드가 반환한 JSP 경로로 내부이동해서 JSP를 실행한다.
- JSP에서는 EL 표현식을 사용해서 요청객체의 속성으로 전달받은 데이터를 표현한다.
Redirect와 Forward
Redirect
- void response.sendRedirect(String url) : 지정된 url을 재요청하라는 응답을 클라이언트에게 보낸다
Forward
- RequestDispatcher 객체가 제공하는 메소드를 활용해서 포워드 방식의 내부이동이 가능하다
- RequestDispatcher request.getRequestDispatcher(String path) 지정된 경로로 클라이언트의 요청을 보내는 RequestDispatcher 객체를 반환한다
RequestDispatcher의 주요 메소드
- void forward(ServletRequest req, Servlet resp)
- RequestDispatcher 객체에 지정된 경로로 내부이동한다. 내부이동 대상 JSP/서블릿에 요청객체와 응답객체를 전달해서 공유
- void include(ServletRequest req, ServletResponse resp)
- 응답에 지정된 경로의 JSP를 포함시킨다
'Spring' 카테고리의 다른 글
Spring_Spring MVC, 첨부파일 업로드 (0) | 2024.03.15 |
---|---|
Spring_스프링 시큐리티 (0) | 2024.03.12 |
Spring_form 입력 값 유효성 체크, <form:form>태그 (3) | 2024.03.06 |
Spring_AOP (0) | 2024.02.27 |
Spring_스프링 프레임워크(Spring framework), DI, IOC (0) | 2024.02.22 |