[KOSTA] Spring 기반 Cloud 개발자 양성 과정 71일차 - Spring MVC

JUNBEOM PARK·2022년 5월 16일
0
post-thumbnail

🤔 MVC ?

어플리케이션의 확장을 위해 Model, View, Controller로 분리하여 개발 하는 방법

  • 컴포넌트의 변경이 다른 영역 컴포넌트에 영향을 미치지 않음
  • 컴포넌트 간의 결합성이 낮아 프로그램 수정이 용이

장점

  • 화면과 비즈니스 로직을 분리해서 작업 가능
  • 영역별 개발로 확장성이 뛰어남
  • 표준화된 코드를 사용하여 공동작업 및 유지보수가 편리함

단점

  • 개발과정이 복잡, 초기 개발속도가 늦을 수 있음
  • 초보자가 활용하기엔 난이도가 높음


MVC 패턴 구조 순서

Dispatcher Servlet : url의 요청을 받아서 연결 시켜줌
Handler Mapping : Dispatcher Servlet이 Controller로 매핑 하는 방식을 결정
Controller : 로직을 처리
ModelAndView : view 이름, data를 담는다
ViewResolver : view 타입을 정함
View : 받은 data를 출력



요청 처리 순서

  1. Dispatcher Servlet이 request를 수신 -> 어느 컨트롤러에 요청할지 Handler Mapping에게 보냄
  2. Handler Mapping은 Dispatcher Servlet에게 요청을 받아 URL과 Mapping
  3. Dispatcher Servlet은 요청을 Controller에게 전송하여 Controller는 요청을 처리 후 Model을 생성하고 View를 return
  4. ModelAndView 오브젝트는 수행결과를 포함하여 Dispathcer Servlet에 return
  5. ViewResolver가 JSP로 출력하도록 논리적 이름을 실제로 변환
  6. View에 출력




Maven 셋팅

  • Spring MVC : mvc를 사용하기 위함
  • validator : @valid, @InitBinder 어노테이션을 주기 위함


Dispatcher Servlet 셋팅

  • springapp인 servlet-name을 선언
  • mapping시 동일한 name을 선언
  • url-pattern은 /를 주어 모든 요청에 대한 Dispathcer Serlvet이 처리하는 URL Mapping 패턴을 정의

  • web.xml에서 주었던 name으로 xml 생성
  • context 태그를 이용하여 kosta 패키지 안의 어노테이션을 scan
  • mvc 태그를 이용하여 Mapping되는 Controller가 없어도 Handler가 default로 빈 객체로 등록되어 요청을 전달
  • ViewResolver는 Controller가 넘긴 view 이름을 받아 view를 찾음




📘 MVC 예제

  • getMessage 메소드에서 String 타입을 return

  • @Controller로 Controller인 클래스를 지정해주고 setter를 통해 의존성 주입
  • @RequestMapping을 통해 URL 지정을 해주고 ModelAndView 객체를 생성하여 view의 이름과 메세지의 data를 담아 return

  • message라고 정한 data를 가져온다.

profile
DB 엔지니어👍

0개의 댓글