모델 1
모델1 구조는 하나의 페이지에서 입력과 출력을 동시에 구현하고 있습니다.
유지보수와 가독성 문제가 발생하는 구조입니다.
모델2
모델2 구조는 입력 부분은 JAVA로 구현되는 Servlet객체로 처리하고 출력은 JSP로 구현하는 구조입니다.
커맨드핸들러
커맨드핸들러는 요청경로에 해당하는 요청의 내용을 처리하는 객체입니다.
요청마다 서블릿을 두는 방식은 web.xml에 일일이 다 등록을 해주어야 하고 파일이 커지는 문제점이 발생합니다.
그러므로 요청을 받아들이는 서블릿을 두고 요청의 각 세부 내용에 대해 별도의 처리를 할 수 있는 방식으로 작성합니다.
서블릿객체는 요청에 대해 요청의 세부 내용을 판별하고 분류하는 작업을 수행하고 실제 요청 수행은 커맨드 핸들러 객체를 호출하여 수행하도록 합니다. 이는 커맨드핸들러를 인터페이스를 작성하여 구현하는 객체로 생성하면 서블릿이 메소드를 하나만 호출하면 다형성에 의해 서로 다른 커맨드핸들러 객체를 넣을 수 있고 각 메소드를 수행 할 수 있습니다.
하드코딩 하지 않으려면 요청경로와 커맨드핸들러의 정보 목록은 프로퍼티스 파일로 key와 value로 구성하여 준비합니다.
각 커맨드핸들러 객체를 작성시 인터페이스를 구현하여 작성하며 뷰 페이지에서 사용할 자료들을 속성으로 전달하고 뷰 페이지 이름을 리턴합니다.
커맨드 핸들러 객체는 해당 기능을 서비스 객체로 위임하여 수행합니다.
요청경로와 커맨드핸들러의 목록을 프로퍼티스로 작성 후 이를 사용하기 위해서는 서블릿의 init메소드를 사용해 사전 준비를 해주어야 합니다.
init메소드에서 프로퍼티스 파일을 읽어와 key 값을 통해 value를 구하고 이를 동적 로딩하여 객체를 생성하여 사용합니다. 이때 프로퍼티스의 위치는 web.xml에 <init-parm>으로 정보를 줄 수 있습니다.
MVC패턴
MVC(Mode-View-Controller)는 모델2에서 발전한 패턴입니다.
컨트롤러는 사용자 입력처리를 담당하고 모델은 업무로직 처리를 담당하며 뷰는 사용자 입출력 화면 구현을 담당합니다.
모델은 업무로직후 결과를 컨트롤러를 거쳐 뷰에 전달하게 되는데 뷰와 모델을 분리함으로써 뷰의 재사용 가능성을 높이기 위함입니다.
동작 방식
요청이 들어오면 필터 객체를 통해 서블릿 객체로 전달되는 요청을 가로채어 필요한 작업을 수행하는데 주로 인코딩 세팅과 로그인 인증을 확인합니다. 서블릿으로 넘어가게 되면 서블릿에서는 요청 경로에 따라 커맨드 핸들러 객체를 호출하고 커맨드 핸들러 객체에서는 요청을 처리하는데 서비스 객체를 통해 요청을 처리합니다. 수행 결과를 커맨드 핸들러가 받고 결과를 보여주기 위한 뷰 페이지를 결정합니다. 그러면 뷰페이지 이름은 서블릿 객체로 가고 모델 객체는 영역 객체에 저장되어 전달 되어집니다.
'학습(구) > JSP' 카테고리의 다른 글
메서드 (0) | 2021.03.18 |
---|---|
서블릿,필터,리스너 (0) | 2020.12.12 |
객체의 분류 (0) | 2020.11.19 |
디자인 패턴 - 행위 패턴 (0) | 2020.11.19 |
디자인 패턴 - 구조 패턴 (0) | 2020.11.16 |