-
애플리케이션을 세가지의 역할로 구분한 디자인 패턴
Model : 객체 -> 데이터를 담당
- 테이블
- 사용자에 대한 객체라면 사용자의 id, pw의 값 즉 유저의 데이터를 가지고 있음
View : 템플릿 -> 시작적인부분 담당
- html
Controller : 라우터의 역할
- Class가 정의 되어 있으며 해당 클래스의 매서드는 각 URL에 해당하는 매서드가 정의
- URL별로 있는 매서드는 모델을 호출해서 사용자의 요청에 맞는 데이터를 뽑아오고 뷰를 통해서 화면에 뿌려줌
- 예시)
- url : login/ -> login이라는 매서드
- url : home/ -> home_page라는 매서드
사용자가 URL 요청을 하게 되면 컨트롤러는은 해당 URL을 가지고 사용자의 요구사항 파악한뒤 템플릿과 뷰의 내용을 현재 요구사항에 맞게 뽑아서 리턴해주는 역할
EX) www.naver.com/login 과 같은 url로 사용자가 접속을 해온다면 컨트롤러는 사용자가 현재 로그인 서비스를 원한다고 생각할 수 가 있으며 뷰와 템플릿에서 로그인에 해당하는 페이지와, 데이터를 불러옴
위의 디자인 패턴에 해당하는 웹 동작 예시
- 유저 즉 사용자가 로그인 URL로 서버 어플리케이션으로 요청 ( ID, PW의 값을 파라미터로 넘김 )
- 요청을 받은 애플리케이션은 가장먼저 컨트롤러가 URL을 확인
- 해당 ULR이 정의되어 있는 컨트롤러 클래스의 매서드를 찾음
- 해당 매서드는 /login/ URL에 해당하는 Model 객체 (user) 를 찾아서 파라미터 값을 전달 해줌
- 전달받은 파라미터 값을 객체 자신의 login 함수에 전달 즉 ID와 PW를 전달
- 로그인 함수에서는 전달받은 인자 값을 DB를 통해서 셀렉트 한 뒤 일치한다면
- View즉 템플릿에 있는 많은 HTML 중 로그인 성공에 관한 HTML페이지가 뿌려지고 실패한다면 재시도 하라는 HTML페이지가 뿌려짐