[이론]

Spring MVC Architecture, DTO, DI(Dependency Injection),IOC(Inversion of Control), AOP(Aspect Oriented Programming) 조사

[실습]

Json으로 a,b,c 데이터를 받아 (a+b)(b+c)의 값을 반환하는 api를 MVC Architecture로 작성 ex) “http://localhost:8080/combine”*

[이론]

Spring MVC Architecture

Spring에서 제공하는 웹 모듈로 Spring MVC 아키텍쳐는 Front Controller Design Pattern을 토대로 MVC 디자인 패턴을 반영하여 만들어짐.

*front controller design pattern: HttpServlet을 상속한 front controller가 웹 애플리케이션에서 모든 요청을 담당하는 구조

*mvc 디자인 패턴: 웹 애플리케이션의 구현을 3개의 레이어로 나눈 구조. 웹 애플리케이션의 응답에 있어 구조를 model, view, controller로 나누어서 구현, 관리하는 것

Untitled

  1. 과정 설명

[페이지 로드를 위한 Get request가 들어오면 response를 만드는 과정 (client가 페이지를 로드하기 위해 get 요청을 했다고 가정…)]

  1. client로 부터 어떤 url로 http request가 들어옴

  2. dispatcher servlet가 handler mapping으로부터 해당 url이 유효한지 확인. 유효하다면 handlermapping은 해당 url에 mapping되는 메소드를 가지고 있는 controller의 경로를 반환.

  3. dispatcher servlet은 반환된 controller의 경로로 찾아가서 controller 내부의 해당 메소드를 호출함

  4. 메소드가 호출 되면 dispatcher servlet은 메소드의 반환 값을 받아 view resolver에 넘겨줌. (이때 controller는 modelandview라는 객체를 넘겨주는데 이는 그냥 데이터와 view경로를 wrapping하는 객체임)

  5. view resolver는 미리 갖고 있던 prefix와 suffix를 사용해 완성된 view 파일의 경로를 다시 dispatcher servlet에 넘겨줌 (prefix + viewName + suffix == "templates/index.html”)

  6. dispatcher servlet은 완성된 view 파일의 경로를 통해 view에서 파일을 불러온 후 forward 해줌