'MVC'에 해당되는 글 2건

  1. 2014.10.14 ModelAndView Class
  2. 2014.09.11 Spring MVC패턴 (Model2 개발)
2014. 10. 14. 06:43

(번역)

Spring MVC framework에서 ModelAndView class Model class View class 모두를 소유하는 클래스입니다. 두 클래스를 모두 소유하지만 이 두 클래스는 완전히 별개입니다. ModelAndView class단지 Controller Model객체와 View객체를 단 하나의 값으로 리턴하는 것이 가능하게 해줍니다. 그리고 이 클래스는 handler DispatcherServlet class에 의해 리턴됩니다. View class form ViewResolver객체를 이용해서 String view name으로 처리합니다. 다른 방법으로는 View객체로 직접 처리됩니다. Model클래스는 Map인데 이 Map name에 의해 키값화된 복수 객체의 사용이 가능하게 합니다


(부연설명)

원래는 View에 대한 리턴을 ModelAndView 객체로 해야하지만 View객체만 리턴해도 됩니다. Forward ViewInternalResourceView객체를 사용합니다. 그래서 우리가 직접InternalResourceView객체를 넘기면 그냥 그 View를 이용합니다. 하지만 이게 너무 귀찮으니까 SpringMVC는 우리에게 편리한 방법을 제공합니다. 우리가 단지 JSP의 경로를 쓰면 알아서 InternalResourceView를 자동으로 만들어서 작동해줍니다. WEB-INF/view/XXX.jsp라는 접미,접두사가 항상 똑같고 길기 때문에 우리가 String으로 넘길때 InternalResourceViewResolver가 있어서 그게 편리하게 작동해줍니다. , 우리는 String을 그냥 JSP의 이름만 넘기면 알아서 접두(prefix),접미사(suffix)를 만들어서 InternalResourceView를 생성해줍니다. 그런데 더 편리하게 하기 위해서 Spring MVC는 심지어 우리가 리턴하지 않으면 알아서 해당주소(index.html)에서 .html를 제외한 이름의(index)jsp를 알아서 찾습니다.(RequestMapping)


(원문)

외부링크 : java.lang.Object

org.springframework.web.servlet.ModelAndView

public class ModelAndView

extends Object


Holder for both Model and View in the web MVC framework. Note that these are entirely distinct. This class merely holds both to make it possible for a controller to return both model and view in a single return value.Represents a model and view returned by a handler, to be resolved by a DispatcherServlet. The view can take the form of a String view name which will need to be resolved by a ViewResolver object; alternatively a View object can be specified directly. The model is a Map, allowing the use of multiple objects keyed by name.

Author : Rod Johnson, Juergen Hoeller, Rob Harrop



크리에이티브 커먼즈 라이선스

 


Posted by 루피아빠
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 루피아빠