Java for Beginner
675 subscribers
559 photos
156 videos
12 files
857 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Аннотация @Controller

Аннотация @Controller — один из ключевых компонентов в Spring MVC, которая помогает создать контроллеры для обработки HTTP-запросов. Контроллеры играют центральную роль в паттерне MVC (Model-View-Controller), связывая запросы клиента с необходимой логикой обработки и представлением. Аннотация @Controller указывает Spring, что данный класс будет использоваться как контроллер в веб-приложении.

1. Зачем нужна аннотация @Controller?

Аннотация @Controller служит для регистрации класса как компонента, обрабатывающего запросы. В отличие от других бинов, контроллеры работают с запросами пользователя, обрабатывая входные данные, выполняя бизнес-логику и возвращая представления. Аннотация также позволяет использовать другие аннотации, такие как @GetMapping и @PostMapping, для указания маппингов на методы контроллера.

2. Пример использования @Controller

Создадим базовый контроллер с аннотацией
@Controller, который возвращает страницу приветствия.

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

@Controller
public class HomeController {

@GetMapping("/welcome")
public String welcomePage(Model model) {
model.addAttribute("message", "Добро пожаловать в Spring MVC!");
return "welcome";
}
}


В этом примере контроллер HomeController содержит метод welcomePage, который маппится на URL /welcome. Метод добавляет сообщение в модель, чтобы его отобразить на JSP-странице welcome.jsp.

welcome.jsp:
<!DOCTYPE html>
<html>
<body>
<h1>${message}</h1>
</body>
</html>


3. Как работает @Controller в Spring MVC

Когда приложение получает запрос, он обрабатывается специальным объектом DispatcherServlet, который перенаправляет запрос на соответствующий контроллер. Если класс помечен как @Controller, Spring понимает, что это класс для обработки запросов, и анализирует его методы на наличие маппингов. Каждый метод, возвращающий строку с именем представления, после выполнения логики переходит к отображению страницы с этим именем.

4. Как отличить @Controller от других компонентных аннотаций

В Spring существует несколько аннотаций для управления бинами, таких как @Service, @Repository, @Component. Однако @Controller обладает уникальными возможностями, необходимыми для работы с веб-приложениями. В отличие от других бинов, контроллеры тесно связаны с веб-слоем, обрабатывая запросы и возвращая представления, в то время как @Service и @Repository отвечают за бизнес-логику и работу с данными.

5. Связь
@Controller с представлениями

Контроллер в Spring может возвращать как HTML-страницу, так и данные в формате JSON. Если нужно вернуть HTML-страницу, достаточно указать имя представления. Spring автоматически передаст управление в папку представлений.

Пример возврата JSON:
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class JsonController {

@GetMapping("/json")
@ResponseBody
public Map<String, String> getJson() {
Map<String, String> response = new HashMap<>();
response.put("message", "Привет, это JSON!");
return response;
}
}
Аннотация @ResponseBody позволяет вернуть JSON в качестве ответа. Теперь при обращении к /json клиент получит JSON вместо HTML.


#Java #Training #Spring #Controller