Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Spring MVC | Основи Spring Boot
Spring Boot Backend

bookSpring MVC

Чому потрібен Spring MVC

Spring MVC допомагає організувати вебзастосунок відповідно до принципу розділення обов'язків, що спрощує розробку, тестування та підтримку коду. Він надає фреймворк для створення вебсторінок і обробки запитів користувачів, а також для інтеграції з бізнес-логікою та базами даних.

У нашому застосунку використовується трирівнева архітектура для розділення логіки на окремі модулі. Ми маємо рівні repository, service та controller. Таке розділення спрощує підтримку та тестування застосунку.

Ключові анотації та їхня роль

Для кожного шару існують специфічні анотації, які необхідні, щоб Spring міг автоматично розпізнавати та реєструвати компоненти у контексті застосунку (ми розглянемо, що це означає, пізніше). Це допомагає підтримувати чистішу архітектуру та покращує читабельність коду.

Анотація шару репозиторію

Анотація @Repository використовується для позначення класу, який взаємодіє з базою даних. Такі класи зазвичай містять методи для виконання CRUD-операцій (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

У цьому прикладі UserRepository позначено як репозиторій, що дозволяє Spring обробляти винятки, пов’язані з доступом до даних, і автоматично інтегрувати його в додаток.

Анотація Service Layer

Анотація @Service використовується для позначення класу як компонента бізнес-логіки. Такі класи містять методи, що реалізують бізнес-правила та операції додатка.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

Анотація @Service вказує, що цей клас містить бізнес-логіку додатка, що полегшує його використання в інших частинах програми. Це спрощує розробку, оскільки немає необхідності вручну створювати екземпляри цього класу — Spring робить це автоматично.

Анотація шару Controller

Оскільки шар контролера є точкою взаємодії між клієнтом і нашою програмою, необхідно створити ендпоїнти для доступу клієнтів. Це передбачає прив’язку певних URL-адрес до кожного методу, що дозволяє клієнтам безпосередньо взаємодіяти з цими методами.

Для цього потрібно позначити клас анотацією @Controller і визначити метод, який виконуватиме роль обробника запитів.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

Анотація @RequestMapping використовується для зв’язування HTTP-запитів з конкретними методами у контролері. Вона дозволяє вказати, на які шаблони URL та типи запитів (наприклад, GET або POST) повинен реагувати метод. Наприклад, у цьому випадку, метод home() буде реагувати на GET запити до кореневої URL-адреси.

Коли користувач відвідує example.com/, його браузер надсилає HTTP-запит GET на сервер, який потрапляє до Spring-додатку. Spring framework знаходить відповідний @RequestMapping у HomeController, викликає метод home() для обробки запиту і потім надсилає відповідь назад у браузер користувача.

Існують анотації, які забезпечують більш точне зіставлення для типу методу запиту, такі як @GetMapping, @PostMapping, @DeleteMapping тощо. У їхніх атрибутах просто вказується URL, який може бути використаний для доступу до них.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

У цьому прикладі, якщо звернутися до URL /home, буде здійснено перехід до методу home() ЛИШЕ у випадку GET-запиту. Якщо використовується інший тип методу запиту, сервер поверне помилку 404 Not Found для цієї URL-адреси.

@RequestParam

Що таке параметри запиту URL? Це параметри, які з'являються після знака питання в URL. Наприклад, якщо маємо адресу -> example.com/home?name=Alex (key = name, value = Alex), можна безпосередньо отримати цей параметр (name) у методі welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Тут параметр name витягується з URL (/home?name=Alex) і передається до методу welcomeUser().

Можна також витягувати більше ніж один параметр, а не лише один. Усі параметри в URL мають бути розділені символом &. Наприклад: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

У цьому прикладі кінцева точка /home може бути доступна за URL типу example.com/home?name=Alex&age=20, де name та age — це параметри, що передаються до методу.

@PathVariable

У Spring MVC анотація @PathVariable використовується для прив'язки змінної з URL безпосередньо до параметра методу. Це дозволяє отримувати динамічні значення з URL та використовувати їх у методі.

Якщо виникає необхідність динамічно формувати URL, тобто передавати значення безпосередньо у URL, можна використовувати анотацію @PathVariable.

Наприклад, якщо існує шаблон URL на кшталт /users/{id}, можна застосувати @PathVariable для отримання частини {id} з URL та передачі її як параметра у відповідний метод.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

У цьому прикладі значення id витягується з URL (/user/123) і передається у метод getUser(), де значення 123 присвоюється параметру userId.

Ці анотації допомагають розробникам легко налаштовувати обробку HTTP-запитів, зв'язувати дані з об'єктами та керувати відповідями, підвищуючи читабельність і зручність підтримки коду.

Підсумок

Spring MVC спрощує розробку вебзастосунків шляхом розділення обробки запитів, логіки застосунку та відображення представлення. Контролери, позначені анотацією @Controller або @RestController, обробляють запити та повертають дані для відображення.

1. Що робить анотація @Controller у Spring MVC?

2. Яка анотація використовується для обробки GET requests у Spring MVC?

question mark

Що робить анотація @Controller у Spring MVC?

Select the correct answer

question mark

Яка анотація використовується для обробки GET requests у Spring MVC?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

What is the difference between @RequestParam and @PathVariable?

Can you explain more about the three-tier architecture in Spring MVC?

How does Spring automatically create instances of annotated classes?

Awesome!

Completion rate improved to 3.45

bookSpring MVC

Свайпніть щоб показати меню

Чому потрібен Spring MVC

Spring MVC допомагає організувати вебзастосунок відповідно до принципу розділення обов'язків, що спрощує розробку, тестування та підтримку коду. Він надає фреймворк для створення вебсторінок і обробки запитів користувачів, а також для інтеграції з бізнес-логікою та базами даних.

У нашому застосунку використовується трирівнева архітектура для розділення логіки на окремі модулі. Ми маємо рівні repository, service та controller. Таке розділення спрощує підтримку та тестування застосунку.

Ключові анотації та їхня роль

Для кожного шару існують специфічні анотації, які необхідні, щоб Spring міг автоматично розпізнавати та реєструвати компоненти у контексті застосунку (ми розглянемо, що це означає, пізніше). Це допомагає підтримувати чистішу архітектуру та покращує читабельність коду.

Анотація шару репозиторію

Анотація @Repository використовується для позначення класу, який взаємодіє з базою даних. Такі класи зазвичай містять методи для виконання CRUD-операцій (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

У цьому прикладі UserRepository позначено як репозиторій, що дозволяє Spring обробляти винятки, пов’язані з доступом до даних, і автоматично інтегрувати його в додаток.

Анотація Service Layer

Анотація @Service використовується для позначення класу як компонента бізнес-логіки. Такі класи містять методи, що реалізують бізнес-правила та операції додатка.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

Анотація @Service вказує, що цей клас містить бізнес-логіку додатка, що полегшує його використання в інших частинах програми. Це спрощує розробку, оскільки немає необхідності вручну створювати екземпляри цього класу — Spring робить це автоматично.

Анотація шару Controller

Оскільки шар контролера є точкою взаємодії між клієнтом і нашою програмою, необхідно створити ендпоїнти для доступу клієнтів. Це передбачає прив’язку певних URL-адрес до кожного методу, що дозволяє клієнтам безпосередньо взаємодіяти з цими методами.

Для цього потрібно позначити клас анотацією @Controller і визначити метод, який виконуватиме роль обробника запитів.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

Анотація @RequestMapping використовується для зв’язування HTTP-запитів з конкретними методами у контролері. Вона дозволяє вказати, на які шаблони URL та типи запитів (наприклад, GET або POST) повинен реагувати метод. Наприклад, у цьому випадку, метод home() буде реагувати на GET запити до кореневої URL-адреси.

Коли користувач відвідує example.com/, його браузер надсилає HTTP-запит GET на сервер, який потрапляє до Spring-додатку. Spring framework знаходить відповідний @RequestMapping у HomeController, викликає метод home() для обробки запиту і потім надсилає відповідь назад у браузер користувача.

Існують анотації, які забезпечують більш точне зіставлення для типу методу запиту, такі як @GetMapping, @PostMapping, @DeleteMapping тощо. У їхніх атрибутах просто вказується URL, який може бути використаний для доступу до них.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

У цьому прикладі, якщо звернутися до URL /home, буде здійснено перехід до методу home() ЛИШЕ у випадку GET-запиту. Якщо використовується інший тип методу запиту, сервер поверне помилку 404 Not Found для цієї URL-адреси.

@RequestParam

Що таке параметри запиту URL? Це параметри, які з'являються після знака питання в URL. Наприклад, якщо маємо адресу -> example.com/home?name=Alex (key = name, value = Alex), можна безпосередньо отримати цей параметр (name) у методі welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Тут параметр name витягується з URL (/home?name=Alex) і передається до методу welcomeUser().

Можна також витягувати більше ніж один параметр, а не лише один. Усі параметри в URL мають бути розділені символом &. Наприклад: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

У цьому прикладі кінцева точка /home може бути доступна за URL типу example.com/home?name=Alex&age=20, де name та age — це параметри, що передаються до методу.

@PathVariable

У Spring MVC анотація @PathVariable використовується для прив'язки змінної з URL безпосередньо до параметра методу. Це дозволяє отримувати динамічні значення з URL та використовувати їх у методі.

Якщо виникає необхідність динамічно формувати URL, тобто передавати значення безпосередньо у URL, можна використовувати анотацію @PathVariable.

Наприклад, якщо існує шаблон URL на кшталт /users/{id}, можна застосувати @PathVariable для отримання частини {id} з URL та передачі її як параметра у відповідний метод.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

У цьому прикладі значення id витягується з URL (/user/123) і передається у метод getUser(), де значення 123 присвоюється параметру userId.

Ці анотації допомагають розробникам легко налаштовувати обробку HTTP-запитів, зв'язувати дані з об'єктами та керувати відповідями, підвищуючи читабельність і зручність підтримки коду.

Підсумок

Spring MVC спрощує розробку вебзастосунків шляхом розділення обробки запитів, логіки застосунку та відображення представлення. Контролери, позначені анотацією @Controller або @RestController, обробляють запити та повертають дані для відображення.

1. Що робить анотація @Controller у Spring MVC?

2. Яка анотація використовується для обробки GET requests у Spring MVC?

question mark

Що робить анотація @Controller у Spring MVC?

Select the correct answer

question mark

Яка анотація використовується для обробки GET requests у Spring MVC?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3
some-alt