SpringMVC

유동현·2022년 11월 12일
1

스프링MVC

목록 보기
1/13
post-thumbnail

개요

SpringMVC를 배우기 전까지의
MVC Model2 패턴은

위와 같았으나 이제 Spring MVC에서는

위와 같은 형태를 가지며 요청을 받고 응답하는 CS센터인 Front controller가 등장한다.
즉 Spring MVC 에서 클라이언트의 요청이 진입하는 지점 : front controller
이고 사용자의 요청을 front controller가 요청에 맞는 controller에게 request를 전달하는것

회사에 비유하면

ex) 		  ┌ C1(자재부매니저) MV(직원들)
    안내데스크──┿ C2(인사부매니저) MV(직원들)
    ----------	  └ C3(영업부매니저) MV(직원들)
 (front controller)
 Spring이 담당
 그 중에서도
 DispatcherServlet이 담당

와 같은 구조를 띄는 것이다.
이제 우리(개발자)는 MVC 구성하고,
그 환경안에서 약속에 따라 돌아갈 수 있도록 Spring에게 기술서(XML) 넘겨주면 된다.

요약

 	
 		   ┌→ Controller가 주인공: 실제로 하는 일은 없음
		   │                        지시, 교통정리 담당
웹 개발을 위한 MVC 패턴이 적용된 Spring Framework로
   Spring 에서는 DispatcherServlet 클래스가 컨트롤러 역할을 수행하게 된다.
 




Spring MVC 구성요소

  • DispatcherServlet : 클라이언트의 요청을 전달 받는다 (프론트 컨트롤러)
    Controller(사용자 정의 컨트롤러)에게 클라이언트의 요청을 전달하고,
    Controller 가 반환한 결과값을 View 에 전달하여
    적절한 응답을 생성할 수 있도록 처리한다.

  • HandlerMapping : 클라이언트의 요청 URL 을 어떤 Controller 가 처리할지 결정한다

  • Controller : 사용자 정의 Controller. 액션 처리. 우리가 작성.

  • ModelAndView : (내부적으로 있는거 사용) View 객체 정보와 결과값이 들어있는 객체

  • ViewResolver : (Spring에서 제공해주는 내용 돌아감)
    요청에 대한 처리 결과를 보여줄 View 를 결정한다

  • view : 결과 출력. 우리가 작성. → 우리가 작성하지만,
    우리가 작성한게 클라이언트와 만나지 않음.
    우리가 그려낸 view로 spring이 그려낸 것이
    클라이언트와 만나게 될 것이다.
  • web.xml : DispatcherServlet 객체 등록. 우리가 작성
  • dispatcher-servlet.xml : Controller 객체 등록. 우리가 작성.(이름 고정)
  • 클라이언트 요청 -> DispatcherServlet이 HandlerMapping에게 어떤 Controller에게 보내야 하는지 물어봄 -> Controller에서 요청을Model에서 처리하고 이에따른 View를 클라이언트에게 보여준다.
  • 클라이언트와 만난건 View지만 DispatcherServlet가 요청을 접수&처리한 것처럼 보여진다.



Spring MVC의 실행 흐름

  • ① 사용자 요청 → DispatcherServlet 접수

  • ② DispatcherServlet → HandlerMapping 에 주소 분석 요청

  • ③ DispatcherServlet → 특정 Controller 객체 호출 및 결과 수신
    결과는 ModelAndView 객체

  • ④ DispatcherServlet → ViewResolver 에 View 객체 분석 요청

  • ⑤ DispatcherServlet → 특정 View 객체에 Model 객체를 넘겨주고
    결과 출력

    ※ ModelAndView 객체
    : View 객체 정보와 결과값이 들어있는 객체




    Spring MVC 에서 개발자가 하는일

  • Controller
    액션 처리를 담당하는 Controller 클래스 작성
    Annotation 을 사용하지 않으면, Controller 인터페이스를 구현하여 작성
    └→ 사용자 정의 컨트롤러를 우리가 만들어야 하고,
    이걸 만드는 과정에서 annotation 사용하거나
    아니면 framework 답게 Controller 인터페이스를 구현하여 작성

  • View
    결과 출력용 JSP 페이지 작성

  • web.xml
    서블릿 주소와 DispatcherServlet 클래스 등록
    └→ 어떤 요청이 들어왔을 때,
    이젠 다 front-controller로 가야하기 때문에
    DispatcherServlet으로 보내야지 하고 인계해주는거

  • dispatcher-servlet.xml
    우리가 작성한 Controller 객체 등록
    URL 매핑 주소 등록
    └→ 우리가 작성한대로 분기되게 작성해줘야 한다.




    사용 이유

    ※ Spring 이 스트럿츠를 비롯하여 다양한 웹 프레임워크와
    비교적 연동이 잘 되는 편이기는 하지만
    서로 다른 두 프레임워크를 연동하기 위해서는
    설정의 중복 등 개발 과정에서 불편함이 존재할 수 밖에 없다.
    따라서, Spring 이 자체적으로 제공하는 MVC 프레임워크를 사용하게 되면
    Spring 이 제공하는 AOP, 트랜잭션 처리, IoC/DI 등의 기능을
    그대로 사용하면서 MVC 패턴에 기반하여 웹 어플리케이션을 개발할 수 있다.
    또한, 다른 프레임워크와 Spring 을 연동하기 위해서
    설정을 중복해서 적용해야 한다던지... 하는 개발 과정에서 나타나는
    불편을 해소할 수 있게 된다.

0개의 댓글