티스토리 뷰
모델1
웹 프로그래밍 구축 방법 중 Model 1 방식을 이용하게 되면 브라우저(사용자)로 부터 받은 요청을 하나의 파일에서 모두 처리하게 되는데, JSP, service, dao 등 여러 기능이 하나의 파일에 담기게 되면 큰 프로젝트의 경우 구축이후 유지보수 측면에서 어려움을 겪는다.
모델2
이러한 단점을 보완하기 위해 나온 방식이 Model 2 방식이다. Model 1방식과 달리 각각의 기능을 모듈화 하였으며 MVC 패턴을 웹 개발에 도입한 구조이다. 각각 모듈의 기능을 간단히 정리하면 다음과 같다.
- Controller : 사용자 요청(URL, 매개변수)를 이용해 Service객체를 호출 및 DB로 부터 받은 Model을 View로 넘겨준다.
- Service : POJO(순수자바)객체로 구성되며 비즈니스 로직을 수행한다.
- DAO : iBatis, Mybatis, JPA 등 DB Connection을 통해 데이터베이스를 주고받는 역할을 한다.
- View : 사용자에게 보여지는 화면(JSP, HTML 등)
Controller가 사용자로부터 요청을 받은 뒤 필요한 기능(Service)을 실행시킨다. 만약, DB 접근이 필요한 경우 DAO는 Model 객체를 이용해 DB와 통신한다. Controller는 DB와 통신한 결과를 View(JSP)로 전달한다.
MVC 패턴을 적용하게되면 View는 요청할 Controller만 알면되며, Controller는 Service객체를 호출하기 때문에 View와 Service간에 직접적인 결합이 이루어지지 않게되며 Service의 재사용이 가능하다.
MVC 패턴 - Spring framework
스프링에서 사용하는 웹 구조는 MVC 패턴으로 설계되어있다. 핵심 구성요소의 역할을 간단히 정의하면 다음과 같다.
- DispatcherServlet : 들어오는 모든 요청을 먼저 받아 적절한 핸들러로 요청을 보내고 해당 실행결과를 다시 적절한 핸들러로 요청한다.
- Handler Mapping : 요청 처리를 위한 컨트롤러 객체를 탐색한다. (=Request의 URL과 매칭되는 핸들러(@Controller로 구현된 객체)를 찾는다.)
- Handler Adapter : 선택된 Controller객체에 구현된 메소드 중 실행할 메소드를 찾는다. 이후 처리결과를 ModelAndView로 변환하여 DispatcherServlet으로 전달한다.
- Controller, Service, DAO : DB결과를 Model에 저장하고 view이름을 리턴한다.
- View Resolver : 결과를 보여줄 적절한 View를 선택한다.
- View : 사용자에게 응답할 JSP 페이지
스프링 MVC 동작순서
- 클라이언트로 부터 들어온 요청을 DispatcherServlet클래스가 받는다.
- 요청을 처리할 핸들러를 선택하기 위해 요청을 HandlerMapping에게 넘겨준다. HandlerMapping은 요청을 처리할 컨트롤러를 DispatcherServelet에게 반환한다.
- HandlerAdapter는 Controller에 있는 메소드 중 사용자 요청을 처리할 메소드를 찾는다. 이후 처리결과를 ModelAndView로 변환하여 DispatcherServlet으로 넘겨준다.
- 넘겨받은 ModelAndView를 ViewResolver로 보내 적합한 View(JSP)를 선택한다.
- 선택된 View 응답을 생성한 뒤 클라이언트에 응답처리를 해준다.
출처 : [인프런] 자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
'Programming > Spring' 카테고리의 다른 글
스프링 @ModelAttribute 활용 (0) | 2022.04.11 |
---|---|
스프링 커맨드 객체를 통해 단순반복코드 줄이기 (0) | 2022.04.10 |
Java파일 (어노테이션)을 이용한 스프링 컨테이너 설정 (0) | 2022.03.22 |
스프링 컨테이너와 Bean객체의 생명주기 (0) | 2022.03.19 |
스프링 DI Annotation - @Autowired, @Inject 정리 (0) | 2022.03.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 네트워크
- 이클립스
- 개발용어
- CS
- JSP
- 스프링
- 인턴
- svn
- SQL
- HeidiSQL
- 데이터베이스
- C++
- C
- 국비교육
- Open API
- 백준
- 환경설정
- 오라클
- JVM
- CSS
- 넥사크로
- 프로그래머스
- Thymeleaf
- 스프링부트
- 부트스트랩
- 오류
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함