JavaRush /Курсы /Модуль 5. Spring /Введение в Spring MVC

Введение в Spring MVC

Модуль 5. Spring
7 уровень , 0 лекция
Открыта

Начнем с истории. Spring MVC появился в составе Spring Framework ещё в его ранних релизах, как способ создания приложений на основе архитектуры Model-View-Controller. MVC изначально разработан для организации кода в крупных приложениях, чтобы разделить логику обработки данных (Model), отрисовку интерфейса (View) и управление запросами (Controller). Spring MVC взял всё лучшее из этой концепции, добавив свою магию конфигурации и гибкости.

Spring MVC стал настолько успешным и популярным, что многие разработчики ассоциируют его напрямую с самим Spring Framework.

Как работает MVC?

MVC — это как сложенный оркестр, где:

  • Model: отвечает за данные (база данных, бизнес-логика). Это, условно, музыканты, играющие произведение.
  • View: занимается отображением данных для пользователя. Это публика, которая наслаждается мелодией.
  • Controller: управляет всем этим действом. Это дирижёр, который знает, что делать с данными из Model и куда их отправить для отображения во View.

[Клиент (браузер)]
      ↓
[Controller] → [Model]
      ↓
    [View]

MVC разделяет приложение на три независимых компонента, где каждый отвечает за свою часть работы: Model хранит данные и бизнес-логику, View отвечает за отображение, а Controller orchestrate взаимодействие между ними. Это как разделение труда в команде: каждый занимается тем, что умеет лучше всего, не мешая другим. Представьте, что ваш фронтенд разработчик не хочет видеть ваши "страшные" SQL-запросы в HTML-файлах. С MVC вы изолируете запросы, логику, состояние и отображение, чтобы не пугать коллег. Такая архитектура делает код чище, понятнее и проще в поддержке.

Spring MVC привносит в проект:

  • Гибкость: вы можете использовать любые технологии для Views — HTML, JSP, Thymeleaf и даже JSON/XML (да, REST API тоже построены на MVC).
  • Масштабируемость: Spring MVC позволяет легко управлять большими проектами, разделяя код на модули.
  • Автоматизация: с помощью Spring вы экономите массу времени на рутине, используя аннотации и простую настройку.
  • Интеграция: благодаря Spring Boot Spring MVC легко интегрируется в экосистему Spring (например, Spring Security для авторизации, Spring Data для работы с базой данных и т.д.).

Преимущества использования Spring MVC

  1. Скорость разработки: меньше кода, больше функциональности.
  2. Простота тестирования: контроллеры легко тестируются благодаря их независимости от представлений.
  3. Шаблонизация: интеграция с шаблонизаторами (например, Thymeleaf) делает создание пользовательских интерфейсов проще.
  4. Обработка ошибок: встроенные механизмы для обработки исключений.
  5. Поддержка REST: Native поддержка RESTful API для современных веб-приложений.

Подключение Spring MVC в проект

Для начала работы с Spring MVC потребуется настроить зависимости для вашего проекта. Если вы работаете с Spring Boot (а мы точно работаем!), это особенно просто.

Spring Boot берёт на себя всю "черновую" работу по интеграции. Для Spring MVC достаточно добавить стартер-зависимость:

Maven:


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle:


implementation 'org.springframework.boot:spring-boot-starter-web'

Этот стартер включает:

  • Встроенный веб-сервер (Tomcat по умолчанию).
  • Основные компоненты Spring MVC для работы с HTTP-запросами.
  • Jackson для сериализации/десериализации JSON (актуально для REST API).

Настройка начального конфигурационного файла

Spring Boot автоматически настраивает большинство аспектов для работы с Spring MVC. Вам нужно лишь убедиться, что в вашем application.properties или application.yml всё готово для работы:

application.properties:


server.port=8080
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

Здесь мы видим:

  • server.port — задаёт порт для нашего веб-сервера.
  • spring.mvc.view.prefix и spring.mvc.view.suffix — указывает путь и расширение для представлений (например, JSP).

Первый взгляд на Spring MVC: пример

Создание минимального контроллера

Давайте добавим в наш проект простой контроллер для обработки HTTP-запросов.

Код контроллера:


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Возвращает имя представления
    }
}
  • @Controller: указывает, что данный класс является контроллером Spring MVC.
  • @GetMapping("/hello"): связывает HTTP GET-запросы на URI /hello с методом sayHello.
  • return "hello": возвращает имя представления. Spring будет искать файл hello.jsp в указанной директории.

Добавление представления

Создайте файл hello.jsp в папке src/main/webapp/WEB-INF/views/.

hello.jsp:


<html>
<body>
  <h1>Привет, Spring MVC!</h1>
</body>
</html>

Теперь запустите ваше приложение, перейдя в браузере на http://localhost:8080/hello. Если вы видите сообщение "Привет, Spring MVC!", то всё настроено правильно!


Почему всё так легко заработало?

"Магия" заключается в Spring Boot. Он автоматически:

  • Подключил Tomcat как веб-сервер.
  • Настроил обработку HTTP-запросов с использованием Spring MVC.
  • Подготовил предустановленный DispatcherServlet, который управляет всей маршрутизацией запросов.

Важные моменты, которые вы должны знать:

  1. DispatcherServlet: это центральный компонент Spring MVC. Он принимает все входящие HTTP-запросы и передаёт их соответствующим контроллерам.
  2. Model и View: в следующей лекции мы углубимся в то, как данные передаются из контроллера в представления. Спойлер: это проще, чем кажется.
  3. Ошибки конфигурации. Если что-то не работает, начните с проверки:
    • Правильности пути до файлов в application.properties.
    • Правильности версии зависимостей (Spring Boot Starter Web и других).

На этом этапе у нас есть базовое понимание того, что такое Spring MVC, как его подключить и запустить простое приложение. В следующих лекциях мы углубимся в работу с контроллерами, моделями и представлениями, а также начнём делать вещи посложнее.

Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Вячеслав Уровень 115
24 октября 2025
Сразу не заработало, помогла другая зависимость: <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> Кодировку так и не смог настроить(
Александр Уровень 115
11 ноября 2025
Кодировку можно настроить добавлением строки в начало файла hello.jsp: <%@ page contentType="text/html;charset=UTF-8" %>