| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- spring boot
- zsh
- 분할정복 방법
- Less
- 맥
- 오블완
- table status
- 오일러 경로
- mycli
- MySQL
- 동적 프로그래밍 방법
- Pager
- 알고리즘
- 인프런
- 데이크스트라
- 스터디2기
- oh-my-zsh
- 네트워킹데이
- CS스터디
- VI
- 순차탐색
- 인프런워밍업클럽
- 욕심쟁이 방법
- cs
- 터미널
- mysql 표 출력
- 티스토리챌린지
- zsh theme
- 이진탐색
- mysql 표
- Today
- Total
Develop
17일차_MVC2 패턴 본문
안녕하세용
오늘은 데브코스 17일차(4주 3일차) 입니다.
오늘은 MVC2 패턴을 학습했는데요~
MVC 패턴에 대해서 '모델 , 뷰, 컨트롤러로 이루어져있다.~' 정도만 알고 있었습니다.
코드를 작성하면서 '정말 이제 개발에 입문하는구나' 생각이 들었습니다 !
하루종일 하다보니 코드는 방대하고, 무슨 역할인지 제대로 알지못해 수업후에 MVC 패턴에 대해서 공부했습니다.

그리고 수업 4주만에 관절 곳곳에 통증이생겨서 카멜마운트 모니터암 + 팜레스트 + 트랙패드 거치대 셋팅했습니다;; ㅋㅋㅋ
요즘은 수업 8시간 + 개인 공부 4시간 정도해서 컴퓨터앞에 12시간정도는 앉아있는것 같습니다....
자주 나오는 개념들과 자주 작성하는 메서드, 패턴들은 익숙해지지만 매번 새로운게 등장하고 복습하기 바쁘고 그렇습니당
흐억 ㅠ-ㅠ 맨날 새벽에자고 공부할 양이 많고 과부하 오지만 긍정적으로 살기~
공부 내용
MVC 패턴
- 애플리케이션을 모델, 뷰, 컨트롤러 3부분으로 나누어 구성하는 패턴
- 웹 애플리케이션에서 많이 사용 됨
- 기본 구조
- Controller
- 클라이언트가 보내는 HTTP 요청을 받아 Model 에 전달하고, 그 결과를 View 에 반영하는 것
- HTTP 요청을 받아 애플리케이션의 적절한 기능을 호출
- 그 결과를 받아와 HTML 문서나 JSON 형식으로 변환하여 사용자에게 응답
- 사용자의 HTTP 요청은 크게 두가지로 나뉜다.
- 사용자가 눈으로 볼 HTML 문서를 요청하는 것
- HTML 문서가 아닌, 클라이언트에게 필요한 데이터만 요청하는 것
- JSON 데이터를 클라이언트와 주고받을 수 있는 API 를 제공하는 백엔드 웹 애플리케이션
- 주로 HTML 페이지나 스마트폰 애플리케이션에서 사용자의 요청을 받거나 서버간 통신에 사용
- 별도의 UI 가 필요하지 않은 경우 하나의 API 서버가 필요한 데이터 송수신 기능을 수행 </aside>
- 클라이언트가 보내는 HTTP 요청을 받아 Model 에 전달하고, 그 결과를 View 에 반영하는 것
- API Server
- Model
- 애플리케이션의 핵심 데이터와 비즈니스 로직을 처리함 (데이터와 관련된 모든 작업 수행)
- Service: 비즈니스 로직을 담당합니다.
- DAO (Data Access Object): DB와 직접적으로 상호작용하며, DTO (Data Transfer Object)를 포함합니다.
- Repository: 데이터 접근을 담당하며, DB와의 연관을 관리합니다.
- View
- 사용자가 보는 화면을 구성하고, 모델의 상태를 반영하여 출력함
- Controller
- 특징
- 각 부분은 자신만의 책임을 가지고 있으며, 서로 영향을 최소화 함
- 뷰와 모델은 서로 독립적으로 동작 (유저 인터페이스와 비즈니스 로직의 분리)
- 컨트롤러가 모델과 뷰를 동기화하는 역할
MVC2 패턴 (3티어 아키텍쳐)
- MVC 패턴의 확장 버전
- 주로 웹 애플리케이션에서 많이 사용 됨
- MVC2 에서는 컨트롤러가 두 가지 역할을 수행
- 사용자의 요청을 처리하는 역할
- 뷰를 선택하여 반환하는 역할 (프레젠테이션 계층을 명확히 분리, 컨트롤러가 서블릿으로 구현되는 경우가 많음)
- 기본 구조
- Controller
- 사용자 요청을 처리하는 서블릿 역할을 담당
- Model
- 비즈니스 로직을 처리하고, 데이터를 다룸
- View
- 사용자가 보는 화면을 구성하고, JSP나 HTML 파일을 사용
- Controller
- 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 문으로 인식함
오늘 하루도 수고 많으셨습니다~
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 19일차_Annotation, Reflection, Front(HTML) (0) | 2025.03.31 |
|---|---|
| 18일차_TCP 를 이용한 Socket Programming (0) | 2025.03.28 |
| 16일_Git 과 GitHub (0) | 2025.03.25 |
| 15일차_SQL(View, Procedure, Function, Trigger, JDBC 등) (0) | 2025.03.25 |
| 14일차_SQL 문법(Function, DDL, DML, DCL, TCL) (0) | 2025.03.25 |