JSP model1과 model2 비교
(출처:제타위키)
Model1
view+controller, model를 view와 Controller를 한 곳에서 처리
-특징
1. 자바 코드와 JSP 페이지 코드가 섞여서 복잡한 코드가 됩니다.
2. 구조가 단순하여 간단한 페이지를 구성할 때 빠르게 개발 할 수 있습니다.
3. 백엔드와 프론트 엔드가 하나의 페이지에 있어서 분업이 어렵습니다.
(출처:제타위키)
Model2
view, Controller, model을 분리해서 처리
-특징
1. 보여주는 view(JSP페이지), 처리 하는 model(빈,클랙스), 제어하는 controller(서블릿)로 확실하게 나뉩니다.
2. 구조가 복잡하여 학습이 어렵고 설정 및 작업 분량이 많습니다.
3. 백엔드와 프론트 엔드가 나뉘어져 분업이 편리합니다.
Spring MVC 패턴 처리 과정
(출처 : 위키)
요청에 의한 과정 : clinet(URL) -> DispatcherServlet(web.xml) -> Controller(servlet-context.xml) -> @ReuqestMapping -> @Inject XXService -> @Inject XXDAO -> database -> CRUD
응답에 의한 과정 : return XXDAO -> return XXService -> return Controller -> DispatcherServlet에게 데이터 전달 -> ViewResolver -> DispatcherServlet -> View -> Client
1. 클라이언트 (URL)요청 발생시 DispatcherServlet 클래스가 가로챕니다.
: web.xml에서 설정
2. DispatcherServlet은 HandlerMapping으로 전달합니다.
: servlet-context.xml에서 @controller을 스캔합니다.
3. Controller에서 URL에 해당하는 @RequestMapping을 찾아갑니다.
: @Requestmapping(/home)
4. Controller은 해당 메소드에서 처리 하는 과정에서 Service를 호출합니다.
: @Inject XXService
5. Service는 @Inject(DI)로 주입 받고 구현 된 필요 로직을 처리하고 DAO를 주입 받아 데이터 베이스 처리를 위임합니다.
6. DAO는 설정에 따라 database에 쿼리를 전달하여 CRUD를 합니다.
7. return을 통해 DAO로, 다시 return으로 Service로, 다시 return으로 Controller로 옵니다.
8. Contoller는 Model객체에 담아 전달 할 페이지(JSP)로 데이터를 전달합니다.
9. DispatcherServlet이 ViewResoler에게 페이지 정보를 찾으라고 하고 JSP를 찾아 DispatcherServlet에게 알려줍니다.
: servlet-context.xml에서 suffix, prefix하여 /WEB-INF/views/*.jsp 처리 설정을 ViewResolver가 합니다
10. Dispatcher가 view에게 전달하여 페이지를 랜딩하고 데이터를 표출합니다.
: el 언어를 통해 표출
'개발(합니다) > Java&Spring' 카테고리의 다른 글
Spring 어노테이션 정리 (0) | 2018.12.15 |
---|---|
Spring에서 데이터 주고 받기 (0) | 2018.12.13 |
[Spring] UserMapper 사용방법 (0) | 2018.12.12 |
[Spring] tiles3 설정 (0) | 2018.12.12 |
[Spring/maven] Postgresql와 MyBatis 설정 (0) | 2018.12.12 |