[SPRING #8] 웹 기술 (Servlet & Spring Web MVC)

Web Application Architecture


https://litslink.com/blog/web-application-architecture

Spring MVC 처리 흐름


https://terasolunaorg.github.io/guideline/public_review/Overview/SpringMVCOverview.html

서블릿

웹 어플리케이션을 만들 때 필요한 인터페이스

Spring MVC

Spring Framework에 있는 모듈
Web Service를 MVC 패턴을 이용하여 만드는 것
이때 Servlet을 사용

처음 웹은 정적데이터만을 처리해주었음
그래서 나온게 동적 데이터를 처리 CGI 규약이 나오게 된다.

Ex) Web Server : Apache, CGI 구현체 : C PHP

CGI를 도입하면서 생긴 문제(1)

요청이 들어올때마다 프로세스를 만든다는것이다!
프로세스는 메모리에 적재된 프로그램이다.

개선 Process에서 Thread로

쓰레드마다 구현체를 만든다는 문제점이 있었음.

CGI를 보완한 서블릿 등장!

(1) Web Server : 정적데이터 처리
(2) Web Application Server: 동적 데이터 처리

흐름을 보자면
WebContainer: 요청이 들어오면 Thread를 생성하고, Servlet을 실행시킨다. Servlet interface에 따라 Servlet을 관리한다.

init,Service,Destory가 servlet interface 메소드로 정의되어있다.

init: Servlet Instance가 생성
Service: 실제 기능이 수행되는 곳

abstract class HttpServlet extends Servlet
HTTP Methood(GET,POST...)에 따라 doGet(),doPost() 등 메서드가 호출한다. 
doXXX 메서드를 찾아서 재정의 해줘야 한다.


Destroy : Servlet Instance가 사라진다.

Spring Web MVC에서는 Servlet을 어떻게 사용할까?
Dispatcher Servlet을 이용한다.

Spring MVC 처리 흐름


모든 요청이 들어왔을 때, Dispatcher Servlet으로 간다.
요청에 따라 적절한 Controller를 찾는다.
ex) DefaultAnnotationHandlerMapping ( Annotation으로 Url과 Mapping하는 방식)
@RequestMapping("/Employee")
/employee로 접근하면 위 메서드로 mapping해준다.

HandlerMapping에서 찾은 Handler(Controller)의 메서드를 호출한다.
HandlerAdapter가 ModelAndView형식으로 바꿔준다
Data에 해당하는 Model, Data를 넘길 Page에 해당하는 view
보통 view는 이름만 return해줘서 view Resolver 이름을 가지고 실제 view를 찾아준다.

참고 https://www.youtube.com/watch?v=2pBsXI01J6M&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=94
https://www.youtube.com/watch?v=calGCwG_B4Y&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=28

좋은 웹페이지 즐겨찾기