1. MVC Pattern
Model : 결과 데이터
View : UI
Controller : Request 처리, Request/Response 데이터 전달
2. Spring MVC
: MVC Framework(spring-webmvc)
-> Spring DI, AOP 이용가능
🔑 MVC 모델
1. MVC 모델 1과 MVC 모델 2의 차이점에 대해 설명하시오.
👉🏻 MVC란 Model, View, Controller의 줄임말로써, MVC는 사용자와 상호작용하는 S/W를 디자인함에 있어 세가지 요소로 쪼개어 하는 것을 의미합니다. MVC 모델 1은 웹 브라우저의 요청을 JSP 페이지가 받아서 처리 하는 구조입니다. JSP 페이지 안에서 모든 정보를 표현(view)하고 저장(model)하고 처리(control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어집니다. 주로 중소형 프로젝트에 적합한 모델입니다. MVC 모델 2는 모델 1과 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됩니다. 서블릿은 웹 브라우저의 요청을 알맞게 처리한 뒤, 그 결과를 JSP로 포워딩 합니다. 처리 작업의 모듈화로 유지보수가 쉬워지는 반면 개발 시간이 늘어난다는 단점을 가지고 있습니다.
(+) Spring MVC 모델 2
👉🏻 스프링 MVC 프레임워크는 스프링이 제공하는 트랜잭션 처리, DI, AOP를 손쉽게 사용할 수 있습니다.
다른 MVC 프레임워크와 마찬가지로 컨트롤러를 사용하여 요청을 처리합니다. 스프링에서는 DispatcherServlet이 MVC에서의 컨트롤러(Controller)부분을 처리합니다.
💡 구성 요소
구성 요소 | 설명 |
DispatcherServlet | 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성한다. |
HandlerMapping | 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정한다. |
Controller | 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에 리턴한다. |
ModelAndView | 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다. |
ViewResolver | 컨트롤러의 처리 결과를 생성할 뷰를 결정한다. |
View | 컨트롤러의 처리 결과 화면을 생성, JSP 또는 Velocity 템플릿 파일 등을 뷰로 사용한다. |
3. 개발 과정
step 1) DispatcherServlet 설정
: Client로부터 request를 전달받는 servlet 객체(front controller)
: web.xml 설정
step 2) HandlerMapping 설정
: Request를 처리할 handler(controller and method) 선택
[디폴트] /WEB-INF/[name]-servlet.xml
Step 3) Controller 구현 및 설정
- Annotation 기반 controller
: @Controller (자동 bean scan 대상)
: @RequestMapping (사용자 정의 메소드를 특정 request URL에 대한 handler method로 지정)
step 4) ViewResolver
: 논리적인 view 이름에 대해 물리적인 view 객체 생성
step 5) View 구현
: JSP 등을 사용하여 View page 작성
4. Javacode 기반 설정
5. ContextLoaderListener
- Root container
6. HandleMapping
: Request를 처리할 handler(controller) 객체 선택
- RequestMappingHandler : @Controller and @RequestMapping 어노테이션 이용하여 handler 객체 선택
- URL matching pattern
* Ant pattern
? (한 개의 문자), * (0개 이상의 문자와 매칭), ** (0개 이상의 디렉토리와 매칭)
7. Controller 구현 : HTTP 전송 방식 지정
1) method 속성
2) @GetMapping, @PostMapping 이용
8. Request Param 추출
1) HttpServletRequest 이용
2) @RequestParam
3) @PathVariable
3) @RequestHeader
4) @CookieValue
5) Servlet API
9. Command 객체를 통한 Form 입력 처리
: HTML Form 에 입력된 데이터를 자바빈 객체를 통해 입력 받음
- View 에서 command 객체 접근
- @ModelAttribute로 객체 이름 지정
- 여러 개
'Programming > Spring' 카테고리의 다른 글
07. Thymeleaf (0) | 2021.05.31 |
---|---|
06. Spring Boot (0) | 2021.05.27 |
04. bean life-cycle관리 / 외부설정 property / message source (0) | 2021.04.13 |
03. Auto-wiring, Java code 기반 설정, annotation 기반 설정 (0) | 2021.04.13 |
02. SpringDI / 생성자 * setter 방식 / SpEL (0) | 2021.04.06 |