심심한잉여의 잡동사니

[Spring]스프링 MVC 프로젝트 구조의 이해 본문

코딩일기/Spring&SpringBoot

[Spring]스프링 MVC 프로젝트 구조의 이해

심심한잉여 2022. 1. 13. 23:36
반응형

1. 웹 브라우저의 요청(Request)이 DispatcherServlet 인스턴스로 송신된다.
DispatcherServlet 이 궁금하다면 클릭

클라이언트의 request를  DispatcherServlet로 송신하여 처리하게끔 권한을 부여하는 web.xml코드

2. RequestURL 과 Request 컨트롤러의 맵핑을 관리하는 HanadlerMapping 인스턴스와
DispatcherServlet 인스턴스를 참조하여 HandlerMapping 인스턴스로부터 반환된
Controller로 파라미터를 전달한다.

3. 파라미터가 전달된 Controller 는 필요한 비즈니스 로직을 호출하여 요청 정보를 전달한다.

4. 비즈니스 로직(Service <-> DAO <-> Database) 을 통해 일련의 작업을 처리 후 Controller 에 결과를 리턴한다.

5. Controller 에서 처리 결과(모델)와 이동할 View 정보를 ModeAndView 객체에 담아
   DispatcherServlet에 반환한다.
   (모델과 View 는 스프링 MVC가 제공하는 ModeAndView 인스턴스로 취급된다)

6. DispatcherServlet 인스턴스는 View 의 실체를 ViewResolver 인스턴스에 확인한다.
   (Controller 인스턴스로부터 반환된 View 는 논리 정보이기 때문이다)

ViewResolver를 제어하는 servlet-context.xml 코드

 

 

DispatcherServlet이 요청을 컨트롤러에서 찾을 수 없다면 "wepapp/resources" 에서 찾게된다.
따라서 해당 폴더에 많은 양의 리소스가 있다면 자원이 낭비가 될 수 있으니 static 성격의 외부 자원들은 다른 폴더에 넣어 사용하는것이 효율이 더 좋다고 한다.

 DispatcherServlet이 resources를 확인하는 것에 대한 xml

참고 - http://egloos.zum.com/springmvc/v/504151

반응형