• Spring MVC 패턴


MVC는 Model-View-Controller의 약자이며 애플리케이션을 세가지 역할로 구분하는 패턴이다. User가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 View에서 사용자에게 전달하게 된다.


출처 : 생활코딩


  1. Model >> 비즈니스 로직과 사용되는 데이터를 다루는 영역 ex) Service, DAO

  2. View >> 최종 사용자에게 보여줄 프리젠테이션 로직 ex) jsp, asp, php

  3. Controller >>> 흐름을 관리, 모델과 뷰의 조정 역할을 함 ex) Controller

출처 : http://addio3305.tistory.com/41



  • MVC 프로젝트 구조 분석



Java 개발소스 (src/main/java)


Controller, Mapper, DTO, Service, DAO...와 같은 모든 자바 소스코드들이 저장되는 곳



Spring 설정 파일 (src/main/webapp/WEB-INF/spring)


servlet-context.xml

  • <annotation-driven /> 

@RequestMapping를 사용할 수 있또록 하고 그 안에 지정된 URL로 브라우저의 요청 URL이 매핑되게 된다.

  • <resources mapping="/res/**" location="/resources/" />
location은 실제 경로이며, mapping는 location의 resources대신 res를 사용하여 경로를 입력할 수 있도록 한다.
  • <beans:bean class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
            <beans:property name="prefix" value="/WEB-INF/views/" />
            <beans:property name="suffix" value=".jsp" />
    </beans:bean>
위의 InternalResourceViewResolver.class에서 상속 받은 UrlBasedViewResolver.class에 prefix와 suffix에 대한 GetterSetter가 있다.
해당 클레스에 디렉토리 경로(prefix)와 확장자(suffix)가 전달되어 views/에 있는 .jsp파일과 Controller를 이어주는 작업을 한다.

WEB-INF의 특징


외부인 브라우져에서 직접 접근이 불가능하게 되어있다. home.jsp를 실행시키면 404 error가 발생하게 된다. 

그 이유는 주소창에 http://localhost:8080/WEB-INF/views/home.jsp로 연결되는데 바로 WEB-INF로 접근하려고 하면서 error가 발생하게 된다. 


따라서 스프링에서는 직접 접근하지 않고 다른 방법으로 접근 할 수 있도록 한다.

 


최종 정리 진행 순서


1. 클라이언트 요청( /, root 페이지 요청)

2. web.xml에서 dispatcherServlet가 클라이언트 요청을 핸들링

3. servlet-context.xml에서 해당 클래스의 웹요청을 처리하는 컨트롤러를 사용(HandlerMapping으로 Controller를 검색)

4. 해당 Controller가 요청을 처리후, home을 리턴

5. View에 출력

출처 :  http://all-record.tistory.com/165

web.xml



'Java > Spring' 카테고리의 다른 글

Lombok 설치 및 사용법 (Spring Maven)  (0) 2018.04.06
SpringMVC CRUD pom.xml에서 dependency 추가를 위한 작업  (0) 2018.03.23
CRUD  (0) 2018.03.08
JUnit 사용하기 (Spring Maven)  (0) 2018.03.08
매소드 이름짓기 - MVC  (0) 2018.03.07
Posted by 조원오
: