본문 바로가기
Programming/Jsp

[JAVA/JSP] 모델2 기반의 MVC(MODEL-VIEW-CONTROLLER) Design Pattern

by prinha 2020. 7. 14.
반응형

 

 

모델1 구조 : 웹브라우저의 요청(request)을 받아들이고, 웹 브라우저에 응답(response)하는 것을 jsp페이지가 단독으로 처리하는 구조

 

 

 

 

 

모델2 구조 : 요청(request) 처리, 데이터 접근(data access), 비즈니스 로직(business logic)을 포함하고 있는 컨트롤러와 뷰를 엄격히 구분하여 처리하는 구조

[ Controller - Servlet  /  View - JSP Page ]

 


 

MVC 패턴 (Model-View-Controller pattern) -> 디자인 패턴 중 하나 / 소스 관리 용이

- 전통적인 GUI(Graphic User Interface) 기반의 어플리케이션을 구현하기 위한 디자인 패턴

- 사용자의 입력을 받아서 입력에 대한 처리를 하고, 그 결과를 다시 사용자에게 표시하기 위한 최적화된 설계

 

 

MVC 패턴의 요소

1) 모델(Model) : 로직을 가지는 부분

    - DB와의 연동을 통해서 데이터를 가져와 작업 처리

    - 처리한 작업의 결과를 데이터로서 DB에 저장하는 일을 처리

    - JavaBean, Java class(처리 로직)가 이에 해당

    - DAO와 DTO를 합친 것과 같음

      DAO(Data Access Object) : DB를 연동하는 클래스

      DTO(Data Transfer Object) : 해당 테이블의 구조를 그대로 설계한 클래스-JavaBean

 

2) 뷰(View) : 요청에 대한 응답 결과를 화면에 표시 -> 사용자 인터페이스 제공

    - JSP페이지의 request는 컨트롤러인 서블릿과 같은 객체로 공유

      ${requestScope.result}  또는  request.getAttribute("result")와 같이 사용해서 결과를 화면에 표시

    - 정보를 보여주는 역할'만'을 담당

    - JSP페이지가 이에 해당

 

3) 컨트롤러(Controller) : 어플리케이션의 흐름 제어 -> 서블릿(Servlet) 이 이에 해당

    - 사용자의 요청을 받아서 요구 사항을 분석 후 로직 처리를 모델에게 넘겨줌

    - 모델이 처리한 로직 처리결과를 사용자에게 응답하기 위해 뷰로 보냄

    - 웹브라우저의 요청을 받는 진입점

 

 

 

컨트롤러의 작업 처리 과정

① 웹 브라우저의 요청을 받음 -> 서블릿의 서비스 메소드인 doGet() 또는 doPost()를 통해서

② 웹 브라우저가 요구하는 작업을 분석 -> 사용자가 요구한 작업에 맡는 로직이 실행되도록 요구 작업 분석

③ 모델을 사용해서 요청한 작업을 처리 

④ 로직 처리결과를 requests객체의 속성에 저장 -> 처리 결과는 같은 request객체 영역에서 공유

⑤ 뷰(JSP페이지)를 선택 후 해당 뷰로 forwarding -> 처리 결과를 저장한 request객체를 뷰로 전달

 

 

 

컨트롤러인 서블릿에 사용자의 요청을 파라미터로 명령어 전달

- 간편하긴 하나 웹 브라우저를 통해 정보 노출

- 사용자가 어떤 요청을 했는지 판단하기 위한 가장 일반적인 방법

- 명령어와 로직을 연결하는 properties 매핑 파일이 필요

- 컨트롤러인 서블릿에 요청 파라미터 정보를 덧붙여서 사용

  http://localhost:8080/studyjsp/MessageContoller?message=aaa

 

 

컨트롤러인 서블릿에 요청 URI 자체를 명령어로 사용

- 요청되는 URI가 실제 페이지가 아니고 명령어이므로 악의적인 명령어로부터 사이트가 보호되며,

  요청되는 URL이 좀 더 자연스러워 진다는 장점

  http://127.0.0.1:8080/studyjsp/ch17/test.do

 

 


 

전체적인 컴포넌트 설계

 

반응형