개발/JSP
(JSP) MVC 패턴
kakk789
2022. 5. 23. 15:48
MVC 패턴
- Model, View, Controller의 약자로, 웹 애플리케이션을 비즈니스 로직, 프레젠테이션 로직, 요청처리 데이터로 분리하는 디자인 패턴
비즈니스 로직
- 사용자의 요청에 따른 일을 처리하는 코드를 의미 (예를들어 / 고객, 제품, 주문정보의 조작)
프레젠테이션 로직
- 사용자에게 보여주기 위한 부분 (위치, 폰트, 크기 등)
요청 처리 데이터
- 비즈니스 로직 + 프레젠테이선 로직 함께 묶는 것
MVC 구성요소
모델(model)
- 비즈니스 로직을 담는 객체 (사용자의 일처리를 위해 사용되는 모든 자바 class)
뷰(View)
- 모델의 정보를 보여주는 역할 (JSP)
컨트롤러(controller)
- 모델과 뷰 사이에 동작이 있을 때 조정하는 역할 (Servlet)
- 웹으로부터 받은 요청에 가장 적합한 모델을 생성과 처리, 적절한 뷰를 선택하여 모델을 전달
- 사용자의 요청을 받아들임
동작 원리
- 클라이언트는 컨트롤러(Servlet)에게 요청하고 컨트롤러는 사용자의 요청을 파악 후, 해당 사용자의 요청 URL주소를 가지고 '모델(dao)'을 선택하고 적절한 '뷰(.jsp)' 를 선택

상태유지 방법
- 브라우저를 닫기 전까지 = session을 사용 (session.setAttribute)
- 이 다음 연결된 뷰까지 상태 유지 = reqeust를 이용 (request.setAttribute)
- 상태 유지 된 값을 전송 할 View 페이지 저장( getRequestDispatcher)
- request 객체와 request 객체를 해당 View페이지로 전송 (forward)
Controller (서블릿) 기본 내용
1. DAO (모델)로 부터 데이터를 받아옴
2. 해당 데이터를 상태유지 (request.setAttribute)
3. dispatcher 만들기 (request.getRequestDispatcher("보낼 뷰.jsp"))
4. 뷰로 보내기 (dispatcher.forward(request, response);)
protected void doGet(......){
BookDAO dao = new BookDAO();
//1. '모델'로부터 값을 받아옴(dao로 부터)
ArrayList<BookVO> list = dao.printBookList();
//2. 상태유지
request.setAttribute("list", list);
// 3. 4. '뷰'로 상태유지된 list를 보내기
RequestDispatcher dispatcher = request.getRequestDispatcher("listBook.jsp");
dispatcher.forward(request, response);
}
반응형