'Model2'에 해당되는 글 1건

  1. 2014.09.11 Spring MVC패턴 (Model2 개발)
2014. 9. 11. 23:20

1) 요약


- Spring MVC Flow

사용자의 요청-> 사용자의 요청을 분석 -> 사용자의 요청을 처리할 자바빈을 생성 -> 비즈니스 로직이 구현된 메소드를 실행 -> 비즈니스 로직 수행 후 사용자의 요청을 JSP페이지(Redirect)나 혹은 특정 URL로 이동(포워드)시킴


- 웹 어플리케이션을 개발할 때 Spring MVC패턴을 적용하여 웹 어플리케이션의 개발이 가능하도록 구현한 것

- MVC Model-View-Controller로 각각의 역할을 나누어서 개발하는 하는 방식을 말함

- View JSP가 담당하고, Controller Servlet, Model application을 이용하여 개발

- Model 은 비즈니스로직을 담당하는 부분, 비즈니스 로직을 UI(View)로부터 분리시킴

- View client가 직접 사용하는 부분이며, Model에서 생성된 Data client에게 보여주는 역할을 담당, 웹에서는 JSP가 담당함

- Controller는 사용자의 요청을 받아서 요청에 해당하는 비즈니스로직을 수행하도록 하고, 응답을 client에 보내는 역할, 웹에서는 서블릿이 담당


2) MVC패턴 장단점


- 장점 : 디자인코드와 비즈니스 로직이 분리

- 단점 : 초기 설계에 많은 시간이 소요, 개발자에게 MVC패턴에 대한 개념이 필수적으로 요구

 


MVC의 역할


1) Controller의 역할


- 사용자의 요청을 받아서 분석하고 필요한 비즈니스로직(Action)을 수행

- FrontController(DispatcherServlet) 패턴 : 모든 요청을 한군데에서 받음

- ControllerPOJO(Plain Old Java Object)로 만듭니다.

- 프레임워크에 종속적이지 않습니다.

-> Controller에서 Request Object, Response Object를 받는다면 웹에 종속이게 되지만 Spring ModelAndView라는 클래스가 이것을 따로 담당합니다. Controller에 넘어오는 인자가 Request Object, Response Object가 아닙니다.  


2) Model의 역할


- 비즈니스 로직이 구현되어 있습니다.

- View에 제공할 Data를 가공(데이터 그자체, 거의 VO)

- Database에 데이터를 조회, 추가, 변경, 삭제하는 작업을 수행(DAO와 연결)


3) View의 역할


- 클라이언트에게 최종적으로 보여지는 영역입니다.

- 웹에서는 JSP JSTL을 이용해서 구현합니다.(JSP파일은 WEB-INF view폴더에 저장)

(CSS, Javascripts, Stylesheets, font, image 관련 파일은 등은 WebContent 폴더 하위에 저장)

(WEB-INF폴더 안에 넣으면 외부에서 접근 불가 보안상 필요)

- HTML에 데이터를 뿌려줍니다.

- web.xml에서 URL을 설정해주면 주소창에는 파일명이 표시되지 않습니다.(포워드방식)

*web.xml : FrontController(DispatcherServlet)에 대한 초기 설정을 하는 곳

프레임워크에서 설정은 .xml에서 합니다.

 

Spring MVC 웹 개발 시 필요한 Class


- ControlServlet Class : Controller의 역할을 수행하는 Master Servlet

- ActionFactory Class : 사용자의 요청을 처리할 비즈니스 로직이 구현된 XXXAction 객체의 생성을 담당

- Action Class : 모든 XXXAction 클래스가 구현할 Interface

- XXXAction Class : Action 인터페이스의 메소드를 재정의하고 있는 클래스(실질적인 비즈니스 로직의 구현체)

- ActionForward Class  : XXXAction의 비즈니스 로직 수행 후 ControlServlet에게 반환하는 객체

(이동할 URL과 이동방법(포워드/리다이렉트)을 저장)

 

커맨드방식(CMD방식)


) write.jsp, list.jsp ->.jsp까지 안쓰겠다는 것

localhost/0527/index.jsp?cmd=wirte

localhost/0527/index.jsp?cmd=list : 


Posted by 루피아빠