본문 바로가기

IT개발정보/spring and java

spring MVC 프로젝트 구조 와 동작순서

1. 스프링 MVC 프로젝트 기본 구조

 

1. src/main/java
자바(.java) 파일이 모여있는 곳입니다. 패키지로 잘 분리해서 자바 클래스를 생성해 사용하면 됩니다. 스프링에서 이미 MVC 패턴의 서블릿 구조를 잡아주기 때문에 따로 서블릿을 만들 필요 없이 스프링 구조에 맞춰 클래스 파일들을 작성해주면 됩니다. 

 

2. src/main/resources
자바 클래스에서 사용하는 리소스를 보관하는 곳입니다. DB 연결을 위한 자원, 의존성 주입(DI)을 위한 xml 파일 등 자바 코드 외 모든 자원은 이곳에 넣어주면 됩니다.

 

3. src
Web에 관련된 자원이 담겨있는 루트 폴더입니다. 하위 폴더에 웹과 관련된 모든 자원들이 분류되어 있습니다. main 폴더 안에 모두 들어가고, test 폴더는 말 그대로 테스트를 위한 공간입니다.

 

5-1. src/main/webapp/resources
웹에 필요한 다양한 자원들을 보관하는 곳이자, 사용자가 직접 접근할 수 있는 공간입니다. js, css, img 파일 등이 보관되어 있으며, 보통 컨트롤러가 요청을 가로채지 않고 바로 접근할 수 있도록 따로 설정해서 사용하는 곳입니다.

 
3-2. src/main/webapp/WEB-INF
웹에 필요한 코드 파일과 컴파일된 파일, 그리고 여러 환경설정 파일들이 보관되는 곳입니다. 보안이 중요한 파일들이기 때문에 외부 사용자가 직접 접근할 수 없으며 컨트롤러(정확히는 핸들러)를 통해 내부적으로만 접근할 수 있는 폴더입니다. 

3-2-1. src/main/webapp/WEB-INF/classes
컴파일 된 파일이 보관되는 곳입니다.

3-2-2. src/main/webapp/WEB-INF/spring
스프링 환경설정 파일(context)이 보관되는 곳입니다. 
 
3-2-3. src/main/webapp/WEB-INF/views
JSP, HTML 파일이 보관되는 곳입니다. 이 폴더가 루트(/)의 기준점입니다. 사용자가 입력하고, 컨트롤러가 받아주는 URL이 이 폴더의 구조를 따라가기 때문에 잘 정리해서 사용할 필요가 있는 곳입니다

 

 

2. 스프링 MVC 프로젝트 기본 구조

Request -> DispatcherServlet (web.xml)-> HandlerMapping (servlet-context.xml) -> Controller [Controller -> Service -> DAO -> DB -> DAO -> Service -> Controller] -> DispatcherServlet -> ViewResolver -> View -> Response

 

정리

  • DAO(Data Access Object) : 매퍼 XML 실행
  • Service : 서비스 클랙스는 비즈니스 클래스가 위치. 컨트롤러와 DAO를 연결하는 역활

 

 

출처:https://hpark3.tistory.com/28