요청 접수, 요청 처리, 응답 HTML 생성의 기능을 분리하여 웹 개발을 하는 방식입니다.
분류 | 기능 | 개수 |
컨트롤러 클래스 | ⓵ 요청 접수 ⓶ 비즈니스 클래스에 요청 처리 지시 ⓹ JSP 페이지명에 해당하는 JSP 페이지 호출하기 |
1개 |
비즈니스 클래스 | ⓷ 요청 처리 후 응답물 얻기 ⓸ 호출할 JSP 페이지명 리턴하기 |
n개(접속 URL 개수) |
JSP 페이지 | ⓺ DB 연동 응답물을 HTML 소스에 반영하고 HTML 파일 생성 | n개(접속 URL 개수) |
역할에 따라 컨트롤러 클래스, 비즈니스 클래스, JSP로 분리하여 코딩하므로 개발자, 디자이너의 협업이 쉽고, 책임 영역이 확실합니다.
유지 보수가 Model1 방식보다 쉬습니다.
기능에 따라 컨트롤러 클래스, 비즈니스 클래스, JSP로 분리하여 코딩하므로 Model1 방식보다 작업 속도가 느립니다.
1개의 가상주소에 대응하는 1개의 비즈니스 클래스가 있어야 합니다.
비즈니스 클래스 내부에서 기능 구현을 모두 개발자가 주도적으로 일일이 코딩해야 하므로 여전히 유지보수가 어렵습니다.
기능 구현에 필요한 주요 객체의 생성 코딩을 개발자가 해야 합니다.
클라이언트가 보낸 데이터를 일일이 코딩으로 꺼내야 합니다.
DB 연동 시 관련 객체를 일일이 생성하고 메소드를 호출해야 합니다.
트랜잭션 설정을 개발자가 해야 합니다.
비교항목 | |
제작 속도 | Model1 >> Mode2 |
규모 큰 프로젝트 경우 유지보수성 | Model1 < Mode2 |
디자이너와 협업과 책임 구분 | Model1 < Mode2 |
보안성 | Model1 << Mode2 |
객체명 | 역할 |
HttpServletRequest 객체 | 요청 메시지 안의 파라미터값 리턴 클라이언트가 보낸 쿠키값 소유한 Cookies 객체 메모리 위치 주소값을 리턴 HttpSession 객체 메모리 위치 주소값 리턴 타 객체 저장/리턴 |
HttpServletResponse 객체 | 클라이언트에게 보낼 쿠키값 저장 클라이언트에게 페이지 이동 명령 전달 |
HttpSession 객체 | 재접속 시 사용할 객체 저장하고 리턴 |
Cookies 객체 | 웹브라우저가 보내온 쿠키값 저장 또는 웹브라우저에게 전송할 쿠키값을 리턴 |
객체명 | 객체 생성 시점 | 객체 제거 시점 |
HttpServletRequest 객체 | URL 주소로 접속 시 매번 새 롭게 생성 | doGet | doPost (~) 실행 완료 후 제거 |
HttpServletResponse 객체 | ||
HttpSession 객체 | 웹브라우저와 웹서버 간에 연결 상태가 없는 상태에서 처음 접 속 시 한번만 생성 | 웹브라우저와 웹서버 간에 연결 상태가 끊어질 경우에만 제거 예) HttpSession 객체에 설정 된 수명이 다할 때 |
HttpSession 객체는 생성 직후 해당 웹브라우저와 웹서버의 연결 상태가 유지되는 동안은 계속 살아있고, 웹 브라우저가 재접속 시 모든 비즈니스 클래스나 JSP 페이지에서 호출하여 재사용할 수 있습니다.
HttpSession 객체는 살아있는 동안 해당 웹브라우저 혼자만 독점합니다.
HttpServletRequest 객체, HttpSession 객체의 존재 범위는 ControllerAction 클래스, XxxAction 클래스, ~.jsp입니다.
ControllerAction 클래스는 단 1개만 존재하여 모든 클라이언트 요청을 제일 먼저 맞이합니다.
주로 접속하는 가장 주소 개수만큼 XxxAction 클래스, xxx.jsp도 존재합니다.
http://**/xxx.do는 그 경로에 자원이 실존하지 않는 가상 자원 주소입니다.
가상 주소 xxx.do와 대응하는 XxxAction 클래스의 정보를 ~.properties 파일에 따로 저장하여 관리 할 수도 있습니다.
· ~.properties 파일 특징
2개의 데이터를 =로 매칭해 주는 문자열을 포함하는 텍스트 파일입니다.
예) memRegForm.do=MemRegFormAction
XxxAction 클래스는 경우에 따라서 DAO 클래스와 연동하지 않을 수도 있습니다.
XxxAction 클래스와 DAO 클래스 사이에서 DB 연동 요청, DB 연동 응답 시 주고받는 데이터는 주로 JavaBean에 넣어 주고받습니다.
모든 XxxAction 클래스는 단 1개의 인터페이스를 구현받아 하나의 메소드를 재정의합니다.
Action이란 단어와 do라는 확장자는 프로젝트마다 다른 문자열로 표현될 수 있습니다.
※ DAO 클래스의 메소드 리턴 값은 주로 boolean, int, double, String, HashMap, ArrayList, 배열 객체
※ 결국 개발자가 지속적으로 손대야 할 것은 XxxAction 클래스, JSP, DAO 클래스
MVC 동작 구조 (0) | 2021.05.03 |
---|---|
JSP 기술의 종류 (0) | 2021.04.30 |
JSP(Java Server Page) - Spring (0) | 2021.04.24 |
Cookie 객체 - Spring (0) | 2021.04.22 |
HttpSession 객체 - Spring (0) | 2021.04.21 |
댓글 영역