Srping MVC에서 Model , View, Controller의 사용법을 이해한다.
Model, View, Controller 를 분리한 디자인 패턴(개발자가 직접 구현해야 하는 것)

Spring MVC을 위한 필수적인 기본 설정 방법

  • Maven Configuraion (pom.xml)
  • Web Deployment Descriptor(web.xml)
  • Spring VMC configuration

Spring MVC Archtecture란

Model

  • 애플리케이션의 상태(data)를 나타낸다.
  • 일반적으러 POJO로 구성된다.
    • POJO(Plain Old Java Object) : 오래된 방식의 순수한 자바 객체, 다른 특정 기술에 종속적이면 POJO가 아니다.
    • https://siyoon210.tistory.com/120
  • Java bean의 형태이다.

 

siyoon210.tistory.com/120

 

POJO - (Plain Old Java Object)란 뭘까?

POJO 자바나 스프링 프레임워크를 조금이라도 공부 해본 개발자 (혹은 학생)이라면 POJO 라는 단어를 한번쯤 듣게됩니다. POJO의 정의는 사실 그렇게 어렵지 않습니다. 아래 내용은 위키 백과에 나

siyoon210.tistory.com

View

  • 디스플레이 데이터 또는 프레젠테이션
  • Model data의 렌더링을 담당하며, HTML output을 생성한다.
  • JSP
  • JSP이외에도 Thymeleaf, Groovy, Freemarker등 여러 Tempate Engine이 있다.

Controller

  • View와 Model 사이의 인터페이스 역할
  • Model/View 에 대한 사용자 입력 및 요청을 수신하여 그에 따라 적절한 결과를 Model에 담아 View에 전달
    • Model Object와 이 Model을 화면에 출력할 View Name을 반환한다.
  • Controller ->Service ->Dao ->DB
  • Servlet

Spring Framework가 제공하는 class

  • DispatcherServlet
    • Spring Framework가 제공하는 Servlet 클래스
    • 사용자의 요청을 받는다.
    • Dispatcher가 받은 요청은 HandlerMapping으로 넘어간다.
  • HandlerMapping
    • 사용자의 요청을 처리할 Controller를 찾는다.(Controller URL Mapping)
      • 하지만 controller를 실행시키진 못한다.
    • 요청 url에 해당하는 Controller정보를 저장하는 table을 가진다.
    • 즉, 클래스에 @RequestMapping("/url") annotation을 명시하면 해당 URL에 대한 요청이 들어왔을 때 table에 저장된 정보에 따라 해당 클래스 또는 메서드에 Mapping한다.
  • ViewResover
    • Controller가 반환한 View Name(the logical names)에 prefix, suffix를 적용하여 View Object(the physical view files)를 반환한다.
      • 예를들어 view name : home, prefix : /WEB-INF/views
      • suffix : .jsp는 "/WEB-INF/views/home.jsp 라는 위치의 View(JSP)에 Controller에게 받은 Model을 전달한다.
      • 이 후에 해당 View에서 이 Model data를 이용하여 적절한 페이지를 만들어 사용자에게 보여준다.

기본 Project Structure

src

개발자가 작성한 Servlet 코드가 저장된다. Controller, Model, Service, Dao

src/main/java

  • 개발되는 java 코드의 경로

src/main/resources

  • 서버가 실행될 때 필요한 파일들의 경로

src/test/java

  • 테스트 전용 경로(각 테스트 코드 작성 경로)

src/test/resources

  • 테스트 시에만 사용되는 파일들의 경로

Libraries

  • Servlet이나 JSP에서 추가로 사용하는 라이브러리 또는 드라이버
  • jar로 압축한 파일이어야한다.

WebContent(전체 ROOT) - webapp

Deploy할 때 WebContent 디렉터리 전체가 .war로 묶어서 보내진다.

  • resources
    • 정적인 데이터(ex, image file, css, js, fonts)
  • WEB-INF
    • classes : 작성한 Java Servlet 파일이 나중에 .class로 이곳에 모두 저장된다.
    • lib : 추가한 모든 라이브러리 또는 드라이버가 이곳에 저장된다.
    • props : property file을 저장한다.
    • spring : spring configuration files을 저장한다. (Spring과 관련된 설정 파일을 모아둔 것)
      • dispathcer-servlet.xml
      • apllicationContext.xml
      • dao-context.xml, service-context.xml 등
      • views : Controller와 매핑되는 .jsp 파일들을 저장한다. (JSP파일의 경로)
      • web.xml : web application의 설정을 위한 web deployment descriptor
        • DispatcherServlet, ContextLoadListener 설정 

pom.xml

  • maven configuration file
  • 어떤 lib를 쓸지 명시한다.

+ Recent posts