MVC2 패턴 개요
MVC2 패턴은 Model-View-Controller 아키텍처를 기반으로 한 웹 애플리케이션 구조로, 클라이언트의 요청을 효율적으로 처리하고 사용자에게 데이터를 표시하기 위해 데이터와 비즈니스 로직, 사용자 인터페이스를 분리합니다. 이 구조는 웹 애플리케이션의 유지보수성과 확장성을 높여줍니다.
각 구성 요소의 역할
M (Model): 데이터와 비즈니스 로직을 관리하는 역할입니다. 데이터베이스와의 상호작용, 데이터를 처리 및 가공하여 비즈니스 로직을 수행하는 책임이 있습니다. Model은 주로 DAO(Data Access Object)와 DTO(Data Transfer Object)로 구성됩니다.
V (View): 사용자에게 데이터를 보여주는 역할을 합니다. 모델에서 가공된 데이터를 사용자에게 표시하며, HTML, CSS, JavaScript 등으로 사용자 인터페이스를 구성합니다.
C (Controller): 모든 요청을 모아주는 역할을 하며, 클라이언트의 요청을 받아 적절한 모델과 뷰로 전달합니다. Controller는 프론트 컨트롤러로서 동작하며, 사용자 요청에 따라 적절한 로직을 수행합니다.
MVC2의 흐름
MVC2 패턴의 흐름은 다음과 같은 단계로 구성됩니다:
사용자 요청: 사용자가 웹 애플리케이션에서 특정 링크를 클릭하거나 폼을 제출합니다. 예를 들어,
<a href="signup.test">회원가입 요청</a>
와 같은 링크를 클릭합니다.요청 수집 및 처리: 이 요청은 서버로 전달되며, 프론트 컨트롤러(예: 서블릿)가 모든 요청을 수집합니다. 이 단계에서 URL 경로를 분석하여 적절한 세부 컨트롤러로 요청을 전달합니다.
컨트롤러 호출: 프론트 컨트롤러는 요청에 따라 적절한 세부 컨트롤러(예: SignupController, LoginController 등)를 호출합니다.
비즈니스 로직 수행: 세부 컨트롤러는 요청에 따라 필요한 비즈니스 로직을 수행하며, 이 과정에서 모델과 상호작용하여 데이터를 처리하거나 가져옵니다.
뷰 결정 및 반환: 비즈니스 로직 수행 후, 컨트롤러는 결과를 기반으로 적절한 뷰(HTML 페이지, JSON 데이터 등)를 결정하여 사용자에게 반환합니다.
각 링크의 컨트롤러와의 연관성
위의 요청 링크들은 다음과 같이 컨트롤러와 연결됩니다:
<a href="signup.test">회원가입 요청</a>
: 사용자가 회원가입을 요청하면,SignupController
가 호출되어 회원가입 비즈니스 로직을 처리하고 적절한 회원가입 페이지를 반환합니다.<a href="login.test">로그인 요청</a>
: 사용자가 로그인 요청을 하면,LoginController
가 호출되어 로그인 비즈니스 로직을 처리하고 로그인 페이지 또는 응답을 반환합니다.<a href="user/getUser.test">회원정보 요청</a>
: 사용자가 회원정보를 요청하면,UserController
가 호출되어 회원정보 조회 비즈니스 로직을 처리하고 회원정보 페이지를 반환합니다.<a href="user/modify.test">회원수정 요청</a>
: 사용자가 회원수정을 요청하면,UserController
가 호출되어 회원수정 비즈니스 로직을 처리하고 수정 결과 페이지를 반환합니다.<a href="logout.test">로그아웃 요청</a>
: 사용자가 로그아웃을 요청하면,LogoutController
가 호출되어 로그아웃 비즈니스 로직을 처리하고 로그아웃 후 페이지를 반환합니다.
MVC2 패턴은 웹 애플리케이션 개발에서 사용자 요청을 효율적으로 처리하고,
데이터와 사용자 인터페이스를 명확히 분리하여 유지보수성과 확장성을 높이는 데 중요한 역할을 합니다.
이를 통해 개발자는 비즈니스 로직을 더욱 간편하게 관리하고, 사용자에게 보다 나은 경험을 제공할 수 있습니다.
'🗄️ Backend > JSP' 카테고리의 다른 글
JSP와 MyBatis (4) | 2024.10.18 |
---|---|
JSP와 MVC 패턴: DAO/DTO, 커넥션 풀, EL, JSTL (1) | 2024.10.18 |
쿠키(Cookie)와 세션(Session) 완벽 가이드 (0) | 2024.10.18 |
JSP와 서블릿: 동적 웹 개발의 기초 (0) | 2024.10.18 |
HTML 기초 및 태그 정리 (2) | 2024.10.17 |