03.20 학습&숙제

한강섭·2025년 3월 20일
0

학습 & 숙제

목록 보기
48/103

03.20 학습! MVC!! 🟥🟧🟨🟩🟦🟪🟫⬜⬛🫢🔔😎😊🤔😭⭐🫢

MVC 디자인 패턴 🟥

사진 출처

Controller : 사용자의 요청을 받고 Model과 View 간의 상호 작용을 조정하는 모듈
Model : 비지니스 로직 즉 업무(Service)를 담당하는 모듈로 필요 시 DB 연동(DAO)
View : 사용자와의 상호작용을 위한 UI를 담당하는 모듈

⭐ 왜 MVC로 나눴을까? -> AOP 분리 -> 관심사 분리 ⭐


Model 1

JSP가 Controller를 맡아 View 로직과 함께 수행

장점 : 단순함, 단점 : 스파게티

⭐ Model 2

엄격히 MVC를 따르며 Servlet이 Controller를 맡아 클라이언트 요청 접수 JSP는 화면만 관리

장점 : 명확한 구조, 단점 : 복잡성, 개발 속도


Deep Dive

Controller : Servlet
Model : java
View : JSP

🔔이제 모든 요청은 Servlet이 받는다!


웹 컴포넌트 호출 : forward

RequestDispatcher dispatcher = request.getRequestDispatcher("/gugu-result.jsp");
⭐dispatcher.forward(request, response);⭐


웹 컴포넌트 호출 : redirect

forward와 달리 외부의 리소스까지 사용 가능

response.sendRedirect("http://www.google.com");

클라이언트 요청이 두번!


/는 container root
response.sendRedirect()

vs

dispatcher.forward()
/는 contextroot

MVC 실습🟧

project의 규모가 커지면서 사용해야 하는 라이브러리들이 다양해짐
-> 팀원들과 버전 동기화 문제 발생

☑️ maven을 이용한 프로젝트 관리 (pom.xml!)

java 기반의 프로젝트 관리 도구로 주로 빌드 자동화와 의존성 관리에 사용

maven의 주요 기능
프로젝트 구조 표준화, 의존성 관리, 빌드 자동화

dependency

properties로 버전 정보를 선언해서 재사용성 강화

❓ 싱글톤 패턴을 왜 쓸까?


회원가입이 화면을 새로 렌더링 하는 걸까?

새로고침
PRG (Post Redirect Get pattern)

새로고침 행위는 이전에 했던 요청을 다시 진행!

F5 -> forward -> 마지막으로 했던 요청으로 돌아간다!

멱등한 GET,PUT.DELETE는 문제 없지만 POST 요청은 멱등하지 않으므로 여러 번 수행되면 중복 제출 문제 발생
-> redirect를 해줘야 함

강사님 수업 🟨


conn = DBUtil.getConnection(); 이거 시간 오래 걸리는데 해결책 어떻게 할래?

-> Connection pool 설치합니다


server는 name이 필요하다


fetch는 비동기


redirect는 링크 그대로
forward는 파라미터 전달


각각의 뜻을 생각해보기

숙제 🟩

알고리즘 야미 한문제!

profile
기록하고 공유하는 개발자

0개의 댓글