봄수의 연구실

Spring MVC 본문

DEV/Java

Spring MVC

berom 2023. 5. 19. 12:08

Spring MVC

Spring MVC는 Spring Framework의 일부로서 웹 애플리케이션을 개발하기 위한 프레임워크입니다.
MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나입니다.
이 패턴은 애플리케이션의 논리를 쉽게 이해하고, 개발하고, 유지보수하게 해주는 유용한 구조를 제공합니다.

Spring의 View Rendering

Spring의 View 렌더링하는 방법을 알아보겠습니다.

먼저 모델을 생성하고 채웁니다.
이 과정에서 애플리케이션에서 사용할 데이터를 수집하고 구성합니다

@Controller
public class MyController {
    @RequestMapping("/somePath")
    public String handleRequest(Model model) {
        // ... populate the model
        model.addAttribute("attributeName", attributeValue);
        return "viewName";
    }
}

View Resolution을 위해 ViewResolver가 사용 됩니다
ViewResolver는 컨트롤러가 반환한 논리적 뷰 이름을 가져와 특정 뷰 인스턴스로 해석합니다.

앞선 MyController에서 return "viewname" 부분이 논리적 뷰이죠
컨트롤러에서 문자열로 된 view 이름을 반환하면, ViewResolver가 보고 뷰를 반환합니다

가장 일반적으로 사용되는 ViewResolver는 미리 정의된 특정 디렉토리의 JSP 페이지에 뷰 이름을 매핑하는 InternalResourceViewResolver입니다.

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

마지막으로 View 렌더링 에서는 ViewResolver에서 맵핑 해준 view를 렌더링합니다

이 때 모델의 데이터를 사용하여 HTML과 같은 출력을 생성합니다.
JSP의 경우 여기에는 모델 데이터(EL 표현식을 통해 액세스 가능)를 JSP 템플릿과 병합하는 작업이 포함됩니다

<html>
    <body>
        <h1>Welcome ${attributeName}!</h1>
    </body>
</html>

Spring MVC의 자료 구조

Spring MVC는 데이터를 모델에 저장할 때, 기본적으로 java.util.Map 인터페이스를 사용합니다.
이는 자료구조에서 키-값 쌍을 나타내는데 사용되며, 흔히 java.util.HashMap 구현을 사용합니다.

Spring MVC 컨트롤러에서는 Model 인터페이스를 통해 뷰로 데이터를 전달합니다.
Model 인터페이스는 내부적으로 Map을 사용하여 데이터를 관리하며, 키-값 쌍으로 데이터를 추가하거나 검색할 수 있습니다.

다음은 Model을 사용하여 데이터를 추가하는 예입니다:

@RequestMapping("/example")
public String example(Model model) {
    model.addAttribute("message", "Hello, Spring MVC");
    return "exampleView";
}

위의 예에서, "message"라는 키와 "Hello, Spring MVC"라는 값을 모델에 추가합니다.
이후 뷰("exampleView")는 이 모델 데이터를 사용하여 내용을 생성할 수 있습니다.

그러나 이외에도, Spring은 모델 데이터를 다루는 데 더 많은 유연성을 제공합니다.
@ModelAttribute 어노테이션을 사용하면, 직접적으로 Model 객체를 사용하지 않고도 모델 데이터를 관리할 수 있습니다.
또한, 컨트롤러 메서드가 객체를 반환하면, Spring은 이 객체를 자동으로 모델에 추가합니다.

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

728x90

'DEV > Java' 카테고리의 다른 글

Servlet의 상태 정보 저장  (0) 2023.05.19
Servlet  (0) 2023.05.19
Java 런타임에 매개변수 이름 얻는 방법  (0) 2023.05.19
Spring의 코드 분리  (0) 2023.05.18
Spring Response와 Request  (0) 2023.05.13