개발로드

☆KDT 2024-03-05★MVC(Model-View-Controller) 패턴 이해하기: 컨트롤러 구현과 활용 방법 본문

JAVA

☆KDT 2024-03-05★MVC(Model-View-Controller) 패턴 이해하기: 컨트롤러 구현과 활용 방법

위대한개발자 2024. 3. 5. 20:57

MVC의 구성 요소

1. Model

  • 데이터를 처리하는 영역입니다.
  • DAO(Data Access Object) 클래스와 데이터 구조를 표현하는 DO(Data Object, Entity) 클래스, DTO(Data Transfer Object)로 구성됩니다.
  • 모델은 뷰나 컨트롤러에 독립적인 구조로, 데이터베이스 처리를 필요로 하는 여러 애플리케이션에서 공유할 수 있습니다.

2. View

  • 화면 구성을 담당합니다.
  • EL(Expression Language)과 JSTL(JSP Standard Tag Library)을 사용하여 컨트롤러로부터 전달된 데이터의 출력과 HTML/CSS 등을 통해 화면 디자인을 처리합니다.
  • 뷰는 기본적으로 모델/컨트롤러와의 종속성이 없도록 구현되어야 합니다.

3. Controller

  • MVC 패턴의 핵심으로, 모든 사용자 요청의 중심에 위치합니다.
  • 사용자 요청에 따라 모델을 통해 데이터베이스와 연동하여 데이터를 처리하고 뷰에 전달합니다.
  • 컨트롤러의 구현은 Servlet 또는 JSP로 가능하며, Servlet 기반의 구현을 권장합니다.

모델1 vs. 모델2

  • 모델1: JSP로만 구현한 웹 애플리케이션으로, 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조입니다.
  • 모델2: 클라이언트의 요청 처리, 응답 처리, 비즈니스 로직 처리 부분을 모듈화한 구조로, 컨트롤러는 Servlet, 뷰는 JSP, 모델은 독립적으로 구성됩니다.

컨트롤러 구현 방법

  1. 사용자(Client) 요청마다 컨트롤러를 만들기: URL 요청 처리
  2. 특정 모듈 단위로 하나의 컨트롤러 안에서 여러 요청 단위를 구분해서 처리하기
  3. 프런트 컨트롤러를 따로 두어 모든 요청을 하나의 컨트롤러로 모은 다음 요청에 따라 구현 컨트롤러를 호출하기

컨트롤러의 기본 기능

  1. 사용자(Client) 요청 처리
  2. 입력값 핸들링
  3. 뷰 이동
    • 데이터를 포함하지 않는 경우: response.sendRedirect("이동할 페이지")
    • 데이터를 포함하는 경우:
      • JSP의 경우: request.setAttribute("변수", 값); pageContext.forwared("이동할 페이지");
      • Servlet의 경우: request.setAttribute("변수", 값); RequestDispatcher dispacher = request.getRequestDispatcher("이동할 페이지"); dispacher.forward(request, response);
      • 스프링 프레임워크의 경우: @GetMapping("urlMapping이름") public String getMemberInfo(int id, Model model){ ... model.addAttribute("member",m); return "userInfo"; }

결론

MVC 패턴은 애플리케이션 개발 시 코드의 유지보수성을 높이고, 협업을 원활하게 하는 데 매우 유용한 디자인 패턴입니다. 특히 컨트롤러의 구현과 활용 방법을 잘 이해하고 활용한다면 더욱 효과적으로 개발할 수 있습니다.

이상으로 MVC 패턴과 컨트롤러의 구현 방법에 대한 블로그를 마치겠습니다. 추가적인 질문이나 의견이 있으시면 언제든지 댓글로 남겨주세요!

여유가 되신다면 제 GitHub에 오셔서 좋은 코드들을 구경해주세요!

 

https://github.com/gimpo5975?tab=repositories

 

gimpo5975 - Overview

gimpo5975 has 4 repositories available. Follow their code on GitHub.

github.com