취미로 음악을 하는 개발자

[Spring] 웹 프로그래밍 설계 모델 본문

공대인/Spring[Boot]

[Spring] 웹 프로그래밍 설계 모델

영월특별시 2019. 5. 25. 20:57
728x90



1) Model 1


: 브라우저에서 요청을 서버로 보내면 서버에서 처리를 하게 되는데 관련 정보를 DB에 접근해서 데이터를 찾는다.

그 데이터를 가공해서 사용자 응답에 맞게 UI 설정을 하고 그것을 다시 브라우저로 응답해준다.

-> Model 1 : 사용자에게 보여주는 모든 것을 하나의 파일로 처리함


- 장단점

ㄴ 모든 것을 하나로 넣기 때문에 개발속도가 빠르지만 유지보수 면이나 나중에 보면 혼동될 수도 있다.


2) Model 2


: Model 1 방식을 보완하기 위해 나온 방식으로 MVC를 기본으로 한다고 한다. 서버에 요청하는 것은 똑같지만 그 요청을 Controller가 받는다. 사용자가 보낸 요청에 따라 맞는 서비스와 DB접근을 찾아서 데이터를 찾는다. Model 1처럼 데이터를 찾으면 가져온 데이터를 View를 통해 브라우저로 응답해준다.


- 장단점

ㄴ 각각의 기능을 다 모듈화시켰기 때문에 유지보수가 좋아진다. 


// 스프링 MVC 프레임워크 설계 구조


: 브라우저에서 요청이 들어오면 DispatcherServlet에서 요청을 받는다. 그리고 그 정보들을 HandlerMapping에게 보내는데 들어온 정보를 여러 Controller에서 적합한 것을 찾아 선택해준다. 그 후에 DispatcherServlet으로 다시 돌아오고 HandlerAdapter에게 또 요청한다. HandlerAdapter는 요청으로 들어온 정보를 선택된 Controller 메소드 중에서 적합한 메소드를 선택해준다. 그리고 그 데이터를 Model로 가져온다. 

Model로 가져온 데이터를 다시 DispatcherServlet에서 ViewResolver로 보내는데 ViewResolver는 결과로 나온 Model 가장 적합한 JSP 문서를 찾는다. JSP 문서를 찾으면 View 응답을 생성하고 브라우저로 JSP를 보낸다.


- 요약

1. DispatcherServlet이 클라이언트로부터 요청을 받는다.

2. HandlerMapping이 받아온 정보를 통해 적합한 Controller를 찾는다.

3. HandlerAdapter가 선택된 Controller에서 적합한 메소드를 찾는다.

4. 데이터를 Model로 가져오고 ViewResolverModel과 가장 적합한 JSP 문서를 찾아준다.

5. View응답을 생성하고 브라우저로 해당 JSP를 보낸다.



* 다음 글에서 다시 작성

// DispatcherServlet 설정

모든 페이지의 시작은 루트이기 때문에 '/'로 설정, 실제로 사용자가 작업할 것은 Controller와 View밖에 없다.

스프링 설정파일을 직접 설정해주면 그 파일을 스프링 컨테이너를 만들어주지만 직접 지정해주지않으면 Default로 정해준다.


// @Controller 

스프링 설정파일에 <annotation-driven /> 태그를 넣어줘야 한다.


// @RequestMapping

url 뒤에 올 페이지의 값을 넣어준다.


// Model 타입의 파라미터

Model 객체를 데이터로 담아서 DispatcherServlet으로 보낼 수 있다.

그 후 DispatcherServlet에 전달된 Model 데이터는 View에서 가공되어 클라이언트로 응답해준다.



Comments