Programming/Spring

스프링 프레임워크 기초: 스프링MVC 구조

vita12321 2023. 8. 2. 18:34
728x90
반응형

스프링 프레임워크는 애플리케이션 개발에 널리 사용되는 자바 기반의 오픈 소스 프레임워크입니다. 여기서 스프링MVC 스프링 프레임워크의 주요 모듈 하나로, 애플리케이션을 구조적으로 개발할 있도록 도와주는 기능을 제공합니다. 이번 글에서는 스프링MVC 개념과 구조에 대해 자세히 알아보도록 하겠습니다.


 

1. 스프링MVC MVC 패턴 개요

 

MVC(Model-View-Controller) 패턴은 애플리케이션의 개발에서 분리하여 관리할 있는 패턴입니다. 여기에서:

 

  • Model은 애플리케이션의 데이터와 비즈니스 로직을 관리하는 부분입니다.
  • View는 사용자에게 표시되는 UI 부분을 담당합니다.
  • Controller는 사용자 입력을 받아 적절한 Model과 View를 조작하는 역할을 합니다.

 

이러한 MVC 패턴을 기반으로 스프링MVC 애플리케이션 개발을 보다 체계적이고 효율적으로 만들어줍니다.


 

2. 스프링MVC 주요 구성 요소

 

스프링MVC 다음과 같은 주요 구성 요소로 이루어져 있습니다:

 

  • DispatcherServlet
    스프링MVC의 핵심 구성요소로, 모든 사용자 요청을 받아 적절한 Controller로 전달하는 역할을 수행합니다.

  • HandlerMapping
    요청 URL을 기반으로 적절한 Controller를 찾아주는 기능을 제공합니다.

  • Controller
    사용자 요청을 처리하고, 처리 결과에 따라 적절한 Model과 View를 반환합니다.

  • ViewResolver
    Controller에서 반환된 View 이름을 해석해 실제 View 객체를 찾습니다.

  • ModelAndView
    Model과 View의 정보를 함께 가지는 객체로, Controller에서 반환됩니다.

 

3. 스프링MVC 작동 과정

 

스프링MVC 사용자 요청을 처리하는 과정에서 크게 다음의 작동 과정을 거칩니다.

 

1) 브라우저에서 사용자가 URL 통해 요청을 보냅니다.

2) DispatcherServlet 요청을 받고 HandlerMapping 해당 요청을 처리할 있는 Controller 찾습니다.

3) 찾아낸 Controller 요청을 처리하며, 필요한 경우 Model 수정하거나 데이터를 조회합니다.

4) 요청 처리 결과를 담은 Model View 정보를 ModelAndView 객체에 담아 반환합니다.

5) DispatcherServlet ViewResolver 통해 ModelAndView 객체에서 전달받은 View 정보에 해당하는 실제 View 찾고, Model 담긴 데이터를 전달합니다.

6) 데이터를 바탕으로 View 최종 결과를 생성한 , 이를 브라우저에 전달합니다.

7) 브라우저는 전달받은 결과를 사용자에게 보여줍니다.


 

4. 스프링MVC 구현 예제

 

스프링MVC 사용해 간단한 애플리케이션을 구현해보겠습니다. 실험해볼 앱은 사용자 프로필을 보여주는 간단한 기능을 가진 애플리케이션입니다.


 

4.1. 프로젝트 생성 설정

 

Maven이나 Gradle 설정을 사용해 프로젝트를 생성하고, 스프링MVC 라이브러리 필요한 라이브러리(: Jackson, Thymeleaf, etc.) 프로젝트에 추가합니다. 그리고 애플리케이션 설정 파일(web.xml)에서 DispatcherServlet 등록합니다.

 

4.2. Model 정의하기

 

우선, 사용자 정보를 담을 간단한 User 클래스를 생성합니다.

 

public class User {

    private String name;

    private int age;

 

    // 생략: getter, setter, 기타 메서드 등

}

 

4.3. Controller 구현하기

 

사용자 요청을 처리할 UserController 생성하고, @Controller 어노테이션을 사용하여 스프링MVC 등록합니다. 요청 URL 처리 메서드의 매핑은 @RequestMapping 또는 @GetMapping, @PostMapping 같은 메서드 레벨 어노테이션을 사용합니다.

 

@Controller

public class UserController {

    @RequestMapping("/user")

    public ModelAndView getUser() {

        User user = new User("John", 25);

        ModelAndView modelAndView = new ModelAndView("user");

        modelAndView.addObject("user", user);

        return modelAndView;

    }

}

 

4.4. View 작성하기

 

사용자에게 보여주기 위한 View 작성합니다. 예제에서는 Thymeleaf 템플릿 엔진을 사용해 html 파일을 작성합니다.

 

<!DOCTYPE html>



<head>

    <title>User Profile</title>

</head>

<body>

    <h1 th:text="${user.name}">User Name</h1>

    <p th:text="${user.age}">User Age</p>

</body>

</html>

 

4.5. 스프링 설정 파일 작성

 

스프링 애플리케이션의 설정을 담당하는 설정 파일을 작성합니다. Java 기반의 설정 파일인 @Configuration 클래스를 사용할 있습니다. 여기에서 기본적인 빈들(: ViewResolver) 등록합니다.

 

@Configuration

@EnableWebMvc

@ComponentScan(basePackages = "com.example")

public class AppConfig extends WebMvcConfigurerAdapter {

 

  @Bean

  public ViewResolver viewResolver() {

    InternalResourceViewResolver resolver = new InternalResourceViewResolver();

    resolver.setPrefix("/WEB-INF/views/");

    resolver.setSuffix(".html");

    resolver.setViewClass(ThymeleafView.class);

    return resolver;

  }

 

  // 생략: 기타 설정 코드...

}

 

4.6. 애플리케이션 실행

 

서버 환경(Tomcat, Jetty )에서 애플리케이션을 실행하고, 브라우저에서 사용자 프로필 페이지에 접근하는 URL (: http://localhost:8080/user) 입력해 제대로 출력되는지 확인합니다.

 

 

이처럼 스프링MVC 사용하면 애플리케이션을 구조적으로 개발하며, 보다 가독성 높은 코드로 프로젝트의 유지 보수에 도움이 됩니다. 스프링MVC 또한 다양한 기능 확장성을 지원하여 여러 가지 환경과 요구 사항에 맞게 사용할 있습니다.

728x90
반응형