Develop

17일차_MVC2 패턴 본문

백엔드/KDT_Programmers

17일차_MVC2 패턴

230801 2025. 3. 27. 02:50

안녕하세용

오늘은 데브코스 17일차(4주 3일차) 입니다.

 

오늘은 MVC2 패턴을 학습했는데요~

MVC 패턴에 대해서 '모델 , 뷰, 컨트롤러로 이루어져있다.~' 정도만 알고 있었습니다.

 

코드를 작성하면서 '정말 이제 개발에 입문하는구나' 생각이 들었습니다 ! 

하루종일 하다보니 코드는 방대하고, 무슨 역할인지 제대로 알지못해 수업후에 MVC 패턴에 대해서 공부했습니다.

 

 

그리고 수업 4주만에 관절 곳곳에 통증이생겨서 카멜마운트 모니터암 + 팜레스트 + 트랙패드 거치대 셋팅했습니다;; ㅋㅋㅋ

요즘은 수업 8시간 + 개인 공부 4시간 정도해서 컴퓨터앞에 12시간정도는 앉아있는것 같습니다....

자주 나오는 개념들과 자주 작성하는 메서드, 패턴들은 익숙해지지만 매번 새로운게 등장하고 복습하기 바쁘고 그렇습니당

 

흐억 ㅠ-ㅠ 맨날 새벽에자고 공부할 양이 많고 과부하 오지만 긍정적으로 살기~

 

 


 

공부 내용

MVC 패턴

  • 애플리케이션을 모델, 뷰, 컨트롤러 3부분으로 나누어 구성하는 패턴
  • 웹 애플리케이션에서 많이 사용 됨
  • 기본 구조
    1. Controller
      • 클라이언트가 보내는 HTTP 요청을 받아 Model 에 전달하고, 그 결과를 View 에 반영하는 것
        • HTTP 요청을 받아 애플리케이션의 적절한 기능을 호출
        • 그 결과를 받아와 HTML 문서나 JSON 형식으로 변환하여 사용자에게 응답
      • 사용자의 HTTP 요청은 크게 두가지로 나뉜다.
        • 사용자가 눈으로 볼 HTML 문서를 요청하는 것
        • HTML 문서가 아닌, 클라이언트에게 필요한 데이터만 요청하는 것
      <aside>
      • JSON 데이터를 클라이언트와 주고받을 수 있는 API 를 제공하는 백엔드 웹 애플리케이션
      • 주로 HTML 페이지나 스마트폰 애플리케이션에서 사용자의 요청을 받거나 서버간 통신에 사용
      • 별도의 UI 가 필요하지 않은 경우 하나의 API 서버가 필요한 데이터 송수신 기능을 수행 </aside>
    2. API Server
    3. Model
      • 애플리케이션의 핵심 데이터와 비즈니스 로직을 처리함 (데이터와 관련된 모든 작업 수행)
      • Service: 비즈니스 로직을 담당합니다.
      • DAO (Data Access Object): DB와 직접적으로 상호작용하며, DTO (Data Transfer Object)를 포함합니다.
      • Repository: 데이터 접근을 담당하며, DB와의 연관을 관리합니다.
    4. View
      • 사용자가 보는 화면을 구성하고, 모델의 상태를 반영하여 출력함
  • 특징
    • 각 부분은 자신만의 책임을 가지고 있으며, 서로 영향을 최소화 함
    • 뷰와 모델은 서로 독립적으로 동작 (유저 인터페이스와 비즈니스 로직의 분리)
    • 컨트롤러가 모델과 뷰를 동기화하는 역할

 


MVC2 패턴 (3티어 아키텍쳐)

  • MVC 패턴의 확장 버전
  • 주로 웹 애플리케이션에서 많이 사용 됨
  • MVC2 에서는 컨트롤러가 두 가지 역할을 수행
    1. 사용자의 요청을 처리하는 역할
    2. 뷰를 선택하여 반환하는 역할 (프레젠테이션 계층을 명확히 분리, 컨트롤러가 서블릿으로 구현되는 경우가 많음)
  • 기본 구조
    1. Controller
      • 사용자 요청을 처리하는 서블릿 역할을 담당
    2. Model
      • 비즈니스 로직을 처리하고, 데이터를 다룸
    3. View
      • 사용자가 보는 화면을 구성하고, JSP나 HTML 파일을 사용
  • MVC 패턴과 차이점
    • 컨트롤러 역할이 두가지로 분리됨 (기존 MVC 에서 컨트롤러는 뷰를 반환하는 역할까지 했음)
    • 뷰는 단순히 출력만 담당하고, 데이터를 서버측에서 처리하여 응답을 생성

 


(미약한) 트러블 슈팅-1

 

개요

도서관리 프로그램을 실행시키면, 메뉴로 진입하기 위해 관리자 역할을 가진 사용자 로그인 필요

 

문제발생

1차 문제_프로그램에 로그인을 할 회원정보 없음 (코드 따라치느라 DB 연결안되어 있음 -> 회원정보 못 쌓아둠)

2차 문제_IntelliJ 에서 DB 접근 권한이 없다고 오류메시지 뜸

 

해결

1차 문제_DBeaver에서 회원 Insert Query 실행 & 관리자 역할 부여 

2차 문제_DBeaver -> DB 선택-> Users -> 사용할 계정 더블클릭 -> Properties -> DBA Privileges 내 모든항목 체크 & 저장

 

이후 프로그램 실행 시 로그인 잘 됨

 

 


 

 

(미약한) 트러블 슈팅-2

 

개요

수업 종료 후 MVC2 패턴 코드를 보다가 노란색 워닝이 뜬 것을 보고 원인을 파악하기 시작함 

 

 

문제 확인

sql 쿼리를 작성한 부분에서 DB 연결 설정이 되어있지 않다고 오류 뜸

No data sources are configured to run this SQL and provide advanced code assistance. Disable this inspection via problem menu (⌥⏎).

 

 

시도

IntelliJ -> 우측 상단 메뉴 ->  Database -> DB 연결(MySQL, test 연결까지 완료)

-> 완료 후 데이터소스에서 사용할 DB 선택

  => 그래도 워닝이 안사라짐 (실패)

 

해결

Inject language reference 사용

SQL 문자열 줄에 커서를 올림

-> Alt + Enter (맥OS : ⌥ 옵션 + Enter)

-> Inject language or reference 선택

-> SQL  MySQL 선택

  => 워닝 사라짐 + 앞으로 sql 문으로 인식함

 

 

 

오늘 하루도 수고 많으셨습니다~