2020.12.31 일지

빵뭉이·2020년 12월 31일
0

비트캠프

목록 보기
53/112

MVC

MVC란?


Model-View-Controller의 약자로 개발 시 3가지 형태로 나누어 개발하는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있다. Model은 애플리케이션의 정보, 즉 데이터를 나타내고, View는 사용자 인터페이스 요소, Controller는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

MVC를 사용하는 이유?

소수의 뛰어난 엔지니어가 해결한 문제를 다수의 엔지니어들이 처리 할 수 있도록 한 규칙이면서, 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법을 개발해 내려온 전설같은 디자인 패턴이다. 엄밀히 말하자면 문제점을 분리할 수 있다는 것이다. 문제점을 분리하니까, 각자의 위치에서 소스를 수정하고, 재사용 할 수 있다고 말할 수 있다. 백엔드와 프론트엔드를 쉽게 분리할 수 있다는 것도 큰 장점이다.

M (domain(=DTO) / DAO / SQL / Service)

백그라운드에서 동작하는 로직을 처리한다.

V (jsp / html)

사용자가 보게 될 결과 화면을 출력한다.

C (controller)

사용자의 입력처리와 흐름 제어를 담당한다. 사용자가 접근한 URL에 따라서 사용자의 요청사항을 파악한 후, 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.

주의사항

  • view에서 view로 바로 링크 이동을 할 경우 MVC 패턴이 아니다. 왜냐하면, controller에 모든 요청이 걸려야 하는데 걸리지 않는다면, controller의 통제에서 벗어나는 것이기 때문이다.
  • 어느 누구도 DAO를 건드릴 수 없고, 같은 패키지인 Service만 DAO를 건드릴 수 있다. 컨트롤러에서 바로 DAO로 가지 않는 이유는 보안이 중요하기 때문이다. 즉 컨트롤러는 서비스와 통하고, 서비스는 DAO를 통한다.

Redirect vs Forward

컨트롤러 역할을 하는 서블릿에서 클라이언트의 각 요청을 받아서 처리한 후 최종적으로 뷰 페이지로 포워딩 처리할 때 사용되는 방식

Redirect 사용방법

response.sendRedirect("보내줄경로");
  • get 방식을 사용하여 파라미터 값을 보내준다.

Foward 사용방법

RequestDispatcher dispatcher = request.getRequestDispatcher("보내줄경로");
dispather.forward(requset, response);
  • RequestDispatcher가 있으면 다음페이지에 파라미터 정보를 유지한다.
  • RequestDispatcher가 없이 포워드하면 페이지에서 별도로 저장하지 않을 시 파라미터가 없어져버린다.

알게된 개념

  • Singleton Object Model : 메모리에 객체, 인스턴스에 올려두고 가져와서 쓰는 방식
profile
휘발방지

0개의 댓글