목차 돌아가기

스프링 MVC 프레임워크 기반의 웹 프로그래밍 구조에 대해서 학습

13-1 웹 프로그래밍 구축하기 위한 설계모델

  • 모델1 방식 (절차형 방식)
  • 모델2 방식 (MVC 방식)

모델1 방식 (기존방식 : 절차형 방식)

기본적인 설계 모델 흐름
1. 클라이언트(브라우저)가 서버(WAS)에게 Request를 한다.
2.WAS에서 데이터베이스에게 Request를한다.(Service & DAO)
3. WAS는 UI작업을 해서 클라이언트에게 Response를 http로 준다.
단점 WAS쪽에 때려박다보니 유지보수 측면에서 너무 빡세다.

모델2 방식(MVC 방식) Spring도 그렇고 거의 대부분 이거다.

기본적인 설계 모델 흐름
위와 차이점
1. WAS들어 올때 Controller, Service, DAO를 거친다.
2. Service 모듈화 (기능)
3. DAO->모델->데이터베이스
4. Controller에게 줄때 JSP(view)를 거쳐서 Response해준다.
장점 유지보수 측면에서 좋다.

13-2 스프링 MVC프레임워크 설계구조

가장 중요한 부분이며 암기!!!

설계구조 흐름도
1, DispatcherServlet 이라는 객체가 요청을 클라이언트(브라우저)로 부터 받는다.
2. HandlerMapping에게 던진다.
(HandlerMapping이란 녀석은 여러 수많은 컨트롤러에서 가장 적합한 컨트롤러를 매핑해준다)
3. HandlerAdapter 각 컨트롤러의 가장 적합한 메서드를 찾아내고 model를 받아온다.
중략... (Service->DB)
4. ViewResolver (뷰)한테 Model 보낸다. 가장 적합한 JSP를 선택한다.
5. View 응답생성(JSP)

  1. 클라이언트가 요청한 URL을 DispatcherServlet이 가로챈다. (web.xml에 DispatcherServlet 등록)
  2. 가로챈 정보를 HandlerMapping에게 보내 요청을 처리할 수 있는 Controller를 찾아낸다. 디폴트 전략 : BeanNameUrlHandlerMapping, DefaultAnnotationHandlerMapping
  3. 요청을 찾은 컨트롤러에게 보낸다. (컨트롤러 → 개발자 구현 영역)
  4. 컨트롤러에서 해당 요청 처리 후 요청을 응답받을 View의 이름을 리턴. 이 이름을 ViewResolver가 먼저 받아 해당하는 View가 있는지 검색
  5. 해당 View가 존재한다면 처리결과를 View에 보낸 후 결과를 다시 DispatcherServlet에게 전달. DispatcherServlet은 최종 결과를 클라이언트에게 전송
 
13-3 DispacherServlet 설정
DispatcherServlet 설정 설명
*web.xml이 생소하다면 JSP, Servlet등의 레퍼런스를 검색해본다.
1. web 어플리케이션의 가장 첫 관문이자. 사거리의 신호등과도 같다.
2. servlet에 DispatcherServlet을 설정해준다.
3. org.springframework.web.servelt.dispacherServlet설정
4. init-param에 스프링 설정파일도 설정해준다.
(web.xml이라는 기존 설정에 Dispatcher를 삽입하는 과정) 
좌측 그림은 초기화 파라미터에서 스프링 설정 파일을 했냐 안했냐의 따라서 어떻게 컨테이너가 설정되는가에 대한 그림이다.

1. 스프링 설정파일(초기화 파리미터) 경우(일반적인 방법)
- 초기화 파라미터에서 지정한 파일(servlet-context.xml)을 이용하여 스프링 컨테이너를 생성
2. 초기화 하지 않은 경우
- appServlet-context.xml을 이용한 스프링 컨테이너를 자동으로 생성 
13-4 Controller 객체 - @Controller
흐름 설명
1. Controlle는 개발자가 만드는 것
위는 선언
아래는 컨테이너 정의 하는 것
13-5 Controller 객체 - @RequestMapping
흐름 설명
1. Controller에서 적당한 메서드를 HandlerAdapter가 찾는과정
2. Controller에 메서드에 RequestMapping("/method")를 붙여준다. (요청 : localhost8090/ch08/success)
13-6 Controller 객체 - Model 타입의 파라미터
흐름 설명
1. 모델과 뷰를 컨트롤러가 보내준다. 

1. 개발자는 Model 객체 데이터를 담아서 DispatcherServlet에 전달 가능하다.
2. DispacherServlet에 전달된 Model 데이터는 View에서 가공되어 클라에게 응답처리한다.
13-7 View 객체
흐름 설명

 
- InternalResourceViewResolver가 view파일을 보낸다.
JSP파일명 설정(bean)
return : "success"
1. prefix /WEB-INF/views
2. suffix .jsp
3. JSP파일명 : /WEB-INF/views/success.jsp

13-8 전체적인 웹프로그래밍 구조

전체적인 흐름

4,5번 과정에서 Service, DAO, DB를 거치고 View, Model을 가져온다.

 

'Spring > [인프런] Spring FrameWork' 카테고리의 다른 글

Service & Dao 객체 구현  (0) 2021.12.30
스프링 MVC 웹서비스  (0) 2021.12.29
어노테이션을 이용한 스프링 설정 -1  (0) 2021.12.27
생명주기(Life Cycle)  (0) 2021.12.24
의존객체 선택  (0) 2021.12.24

+ Recent posts