MVC(Model, View, Controller) model1, MVC model2, FrontController, Controller, Model,

2019. 5. 13. 09:02웹(JSP)

-------------------------------MVC model2---------------------------

model1


            - 요청 하나당 JSP 하나가 필요하다.
            - 자바요소 + HTML 요소
              * 유지보수가 어렵다
              * 자바코드의 재사용성이 낮아진다.
              * 생상성이 떨어진다.

            - 요청이 분산되기 때문에 공통가능의 적응이 어렵다.
            - 프로젝트 수행에 필요한 추가적인 환경설정 및 교육이
              필요하지 않다.
            

model2



            - MVC 패턴을 적용한 웹개발 방식
              (M : model, V : view, C : controller)

            - Front Controller
               * 모든 요청 접수
               * 요청을 분석해서 적절한 컨트롤러를 찾고
                 적절한 요청처리 메소드를 실행한다.
               * controller의 요청처리 완료하면 
                 적절한 JSP로 이동시킨다.

            - Controller
               * 클라이언트의 요청처리 수행
               * model을 실행해서 획득한 데이터를 View로 전달.
               * Front Controller에게 이동할 JSP경로를 제공
            
            - Model
               * 요청처리를 위한 업무로직수행
                 (DB Access, 업무로직 즉 Dao및 Service)
               * Controller에 데이터를 제공한다.
                 (저장, 변경, 삭제와 관련업무일때 데이터
                   제공이 없을 수도 있다.)

            - View (JSP)
               * 동적 컨텐츠를 제공
                 (EL, JSTL)를 사용해서 자바코드 없이
                 동적 컨텐츠를 생성







=========================================================
응수 프레임워트 가이드
            1. 컨트롤러 작성법
                        * 컨트롤러 클래스에는 @Controller를 붙인다.
                        
            2. 요청 핸들러 메소드 작성법
                        * 요청 핸들러 메소드에는 @RequestMapping를 붙인다.
                        * @RequestMapping("요청URI")에 핸들러 메소드와 매핑된 요청URI(요청경로)를 지정한다.
                        * 모든 요청 핸들러 메소드는 ModelAndView객체를 반환한다.
                        * 모든 요청 핸들러 메소드는 HttpServletRequest와 HttpServletResponse를 전달받는다.
                        * 모든 요청 핸들러 메소드는 Exception을 던진다.

            3. ModelAndView
                        * JSP에 전달할 데이터(객체)와 이동할 JSP 페이지의 경로(이름)을 담는 객체가.
                        * ModelAndView에 저장된 데이터는 FrontController이 페이지 이동전에 
                          요청객체에 속성으로 저장한다.
                        * FrontController은 ModelAndView에 설정된 JSP 페이지의 경로로
                          클라이언트의 요청을 이동시킨다.
                        
                        * forward 이동 : "/home.jsp"
                          redirect 이동 : "redirect:home.hta"
=========================================================