1.Servlet동작으로 구현하였다.
Servlet 동작으로 구현하였을때는 Clinet 요청에 대한 것을 각각의 servlet 클래스를 구성하였다.
ex)
requset(제품정보 조회) --> servlet제품정보조회클래스
requset(회원정보 조회) --> servlet회원정보조회클래스
requset(회원 추가) --> servlet회원추가클래스
이때 jsp을 도입하여 좀더 시각적으로 표현하였다.
2.MVC패턴 등장
MVC패턴은 Front controller기반으로 동작한다.
Front-controller란 사용자의 요청을 '대문'인 distpather-servlet이 받는다. 이에 사용자 request에 맞는 controller를 매핑하고 DB에 로직을 처리하는
(Model)을 거처 view 파일사용자에게 전달하는 방법이다.
model이란 controller로 로직을 처리한다(controller <-> service <-> DB)를 작업을 거쳐 데이터를 Model이라는 객체 담는 그릇이다. 보통 (DTO,VO)라고 한다.
modelAndview라는 용어는 model객체와 참조해야하는 view파일(servlet/jsp)와 같은 파일명을 같이 기재해 전달하는 것이다.
modelAndview 를 받으면 viewResolver는 (view B 정보)를 가지고
B.jsp를 찾아서 리턴한다.
현재에는 데이터 정보를 담는 model를 json형태로 사용하여 model부분이 간소화 되었다.
예전 servlet/jsp 동작에서는 MPA(Multiple page) 방법으로 각 사용자 요청에 맞는 결과 페이지가 존재하였다.
하지만 SPA(Single Page)방법으로 전환되며 server에서는 (데이터 정보)만 담은 페이지만 제공하여 React,vue,Angular로 페이지를 처리하는 기법이 사용된다.
즉 server단에서는 하나의 데이터 정보만 전달하면 되고, server안에 사용자를 위한 시각적인 페이지를 가지고 있지 않다.
client의 요청에대한 정보를 Dispathcer-servlet이 받는다.
(Dispathcer-servlet 설정은 web.xml 에서 한다)
그 다음 Handler Mapping에게 요청정보(url, 어노테이션) 정보를 바탕으로 controller 정보를 다시 Dispathcer-servlet에게 전달한다.
Dispathcer-servlet는 controller를 찾아 로직을 처리한다.
처리 과정은 controller <-> service <-> DAO <-> DB
처리 결과를 ModelAndView객체 담아 Dispathcer-servlet에 전달한다.
Dispathcer-servlet는 viewResolver에 view 정보를 요청하고
viewResolver는 view정보를 리턴한다.
Dispathcer-servlet는 해당 view파일을 찾고
client에게 전달한다.
[각각의 구성요소 정리]
[전체 로직 흐름]