2016년 2월 11일 목요일

mvc1, mvc2 패턴의 차이와 spirng mvc 구조

1) 모델 1 개발 방식

 1-1.장점

- 개발 속도가 빠르다.
- 개발자의 스킬이 낮아도 배우기 쉬워 빠르게 적용할 수 있다.

 1-2.단점

- JSP페이지에서 프리젠테이션 로직과 비즈니스 로직을 모두 포함하기 때문에 JSP페이지가   너무 복잡해 진다.
- 프리젠테이션 로직과 비즈니스 로직이 혼재되어 있기 때문에 개발자와 디자이너의 분리     된 작업이 어려워진다.
- JSP페이지의 코드가 복작해 짐으로 인해 유지보수 하기 어려워진다.
- 정교한 Presentation 레이어를 구현하기 힘들다.(유효성 체크, 에러 처리등)

2) 모델 2 개발 방식



 2-1. 장점(Spring MVC를 기준으로)

- Presenation에서 명확한 역할 분담이 된다.
- UI 레이어를 단순화 시킴으로서 디자이너도 작업하는 것이 가능하게 된다. - 단지 Display   용으로만 사용된다.
- Presentation 레이어의 정교한 개발이 가능하다. 유효성 체크, 에러 처리와 같은 기능들은   Spring 프레임워크에서 제공한다.
- Dependency Pull 없이 Dependency Injection만을 이용해서 애플리케이션을 개발하는 것   이 가능하다.
- UI 레이어가 단순해 짐으로서 유지보수가 쉽다.

 2-2. 단점

- 새로운 기술을 익혀야하는 부담감이 있다.
- 프로젝트 초반에 개발속도의 저하를 가져올 수 있다.


3) SPRING MVC 구조


각 흐름을 좀더 자세하게 설명하면 다음과 같다.

클라이언트의 요청이 DispatcherServlet에 전달된다.
DispatcherServlet은 HandlerMapping을 사용하여 클라이언트의 요청이 전달될 Controller 객체를 구한다.
DispatcherServlet은 Controller 객체의 handleRequest() 메소드를 호출하여 클라이언트의 요청을 처리한다.
Controller.handleRequest() 메소드는 처리 결과 정보를 담은 ModelAndView 객체를 리턴한다.
DispatcherServlet은 ViewResolver로부터 처리 결과를 보여줄 View를 구한다
View는 클라이언트에 전송할 응답을 생성한다.
여기서 개발자가 직접 개발해주어야 하는 부분은 클라이언트의 요청을 처리할 Commander 클래스와 클라이언트에 응답 결과 화면을 전송할 JSP나 Velocity 템플릿 등의 View 코드이다. 나머지, DispatcherServlet이나 HandlerMapping, ViewResolver 등은 Spring이 제공하는 기본 구현체를 사용하면 된다.



*reference
  • http://wiki.javajigi.net/pages/viewpage.action?pageId=1136
  • http://javacan.tistory.com/entry/130



Share:

댓글 2개: