본문으로 바로가기

스프링 MVC 프레임워크

category 웹/Spring 2019. 2. 3. 18:30

스프링 MVC 프레임워크


스프링 MVC 프레임워크를 간략하게 살펴보겠습니다.


우선 MVC 돌아가는 그림을 직접 그려보았습니다.


<스프링 MVC>


우선 스프링 MVC를 사용하기 위해 다음과 같은 설정을 진행하게 됩니다.


package config;


import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration

@EnableWebMvc

public class MvcConfig implements WebMvcConfigurer {


@Override

public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

configurer.enable();

}


@Override

public void configureViewResolvers(ViewResolverRegistry registry) {

registry.jsp("/WEB-INF/view/", ".jsp");

}


}


즉 @EnableWebMvc 에노테이션으로 스프링 MVC 활성화 시킵니다.

DispacherServlet의 매핑 경로를 /로 줄 때 JSP/HTML/CSS 등
 
올바르게 처리를 위하여 configureDefaultServletHandling을 설정합니다.

JSP를 이용하여 컨트롤러의 실행 결과를 보여주기 위하여 configureViewResolver를 설정해줍니다.

이렇게 설정이 끝났다면 남은 작업은 컨트롤러와 뷰를 생성해주면 됩니다.

위 그림에서 JSP와 컨트롤러 부분을 작성해주면 되는겁니다.

<<spring bean>>은 스프링 빈으로 등록해야 함을 의미합니다.


DispatcherServlet

이 서블릿은 중앙에 위치하여 모든 연결을 담당합니다.

웹브라우저로 부터 요청이 들어오면 요청 처리를 하는 컨트롤러 검색을 실시합니다.

직접 검색이 아닌 간접적으로 위 그림에 나온 HandlerMapping을 이용합니다.

HandlerMapping은 클라이언트의 요청 경로를 이용하여 컨트롤러 빈 객체를 DispatcherServlet에 전달합니다.

예를 들어 /hello라고 요청이 들어오면 등록된 컨트롤러중 /hello 요청 경로 처리하는 것을 탐색하겠죠.

하지만 바로 사용할 수 있는 것이아니라 HandlerAdapter를 통하여 사용하게 됩니다.

HandlerAdapter는 특수 목적인 HttpRequestHanlder 인터페이스 구현 클래스, Controller 인터페이스 구현 컨트롤러등을 동일 방

식으로 실행 할 수 있게 만든 용도입니다.

중앙에 있는 DispatcherServletHandlerMapping이 찾아준 컨트롤러 객체를 처리할 수 있는 HandlerAdapter에 위임합니다.

HandlerAdapter는 컨트롤러의 알맞은 메서드를 호출합니다. 처리하여 그 결과를 마지막으로 중앙에 있는

DispatcherServlet에 전달합니다. 단 HandlerAdapter가 그냥 반환하는 것이 아니라 ModelAndView 객체로 변환합니다.

이를 받은 DispatcherServlet은 결과를 사용자에게 보여줄 뷰를 찾기 위해 ViewResolver 빈 객체를 사용합니다.

ModelAndView는 사용자에게 보여줄 뷰 이름을 담고있습니다. 마지막으로 DispatcherServlet은 응답 결과 생성을 요청하여 웹 

웹 브라우저에게 신속하게 JSP실행 합니다.