You are on page 1of 27

Лекція №14 з дисципліни КПП (JAVA) на

тему:

Java Web Spring Framework


Вступ

Spring Framework (Або коротко Spring) - універсальний фреймворк з


відкритим вихідним кодом для Java-платформи.
Spring Framework забезпечує комплексну модель розробки і конфігурації
для сучасних бізнес-додатків на Java- на будь-яких платформах.
ключовий елементSpring - підтримка інфраструктури на рівні програми:
основна увага приділяється "водопроводу" бізнес-додатків, тому
розробники можуть зосередитися на бізнес-логіці без зайвих
налаштувань в залежності від середовища виконання.
можливості
•впровадження залежності
•аспектно-орієнтуватися програмування, включаючи декларативне
управління транзакціями
•створення Spring MVC web-додатків і RESTful webСЕРВІС
•Початкова підтримка JDBC, JPA, JMS
•Багато іншого...
Зображення нижче ілюструє структуру Spring
Framework.
модулі
Spring може бути розглянутий як колекція менших фреймворків або
фреймворків у фреймворку.
Inversion of Control-контейнери: конфігурація компонентів додатків і
управління життєвим циклом Java-об'єктів.
фреймворк аспектно-орієнтуватися програмування: працює з
функціональністю, яка не може бути реалізована можливостями
об'єктно-орієнтованого програмування на Java без втрат.
Фреймворк доступу до даних: працює з системами керування базами
даних на Java-платформи, використовуючи JDBC- і ORM-засоби і
забезпечуючи вирішення завдань, які повторюються в великому числі
Java-based environments.
.
модулі

Фреймворк управління транзакціями: координація різних API керування


транзакціями і інструментарій настроюваного управління транзакціями
для об'єктів Java.
Фреймворк MVC: каркас, заснований на HTTP і сервлетах, Що надає
безліч можливостей для розширення та налаштування (customization).
Фреймворк віддаленого доступу: конфігурується передача Java-об'єктів
через мережу в стилі RPC, підтримуюча RMI, CORBA, HTTP-based
протоколи, включаючи web-сервіси (SOAP).
Фреймворк аутентифікації і авторизації: конфігурується інструментарій
процесів аутентифікації і авторизації, що підтримує багато популярних і
стали індустріальними стандартами протоколів, інструментів, практик
через дочірній проект Spring Security (Раніше відомий як Acegi).
модулі

Фреймворк віддаленого управління: конфігурується


уявлення і управління JavaОб'єктив для локальної або
віддаленої конфігурації за допомогою JMX.
Фреймворк роботи з повідомленнями: конфігурується
реєстрація об'єктів-слухачів повідомлень для прозорої
обробки повідомлень з черги повідомлень за
допомогою JMS, поліпшена відправлення повідомлень
за стандартом JMS API.
Тестування: каркас, що підтримує класи для написання
модульних і інтеграційних тестів
IoC Container: Це найважливіша і найголовніша
частина, платформа Spring. Він грає роль конфігурації
і управління життєвого циклу (Lifecycle) об'єктів java. У
сьогоднішній статті ми вивчимо цю частину.
DAO, ORM, AOP, WEB: Ці модулі є готовими tool або
framework інтегровані в Spring.
Spring MVC
фреймворк Spring MVC забезпечує архітектуру паттерна Model - View -
Controller(Модель - Відображення (далі - Вид) - Контролер) за допомогою
слабо пов'язаних готових компонентів. Патерн MVC розділяє аспекти додатки
(логіку введення, бізнес-логіку і логіку UI), забезпечуючи при цьому вільну
зв'язок між ними.

Model (Модель) інкапсулює (об'єднує) дані програми, в цілому вони будуть


складатися з POJO ( «Старих добрих Java-об'єктів », або бінов).
View (Відображення, Вид) відповідає за відображення даних Моделі, - як
правило, генеруючи HTML, які ми бачимо в своєму браузері.
Controller (Контролер) обробляє запит користувача, створює відповідну Модель
і передає її для відображення в Вид.
DispatcherServlet
Вся логіка роботи Spring MVC побудована навколо
DispatcherServlet, Який приймає і обробляє всі HTTP-
запити (з UI) і відповіді на них. Робочий процес
обробки запитуDispatcherServlet'ом проілюстрований
на наступній діаграмі:
Нижче наведена послідовність подій, відповідна входить HTTP-запиту:

Після отримання HTTP-запиту DispatcherServlet звертається до інтерфейсу


HandlerMapping, Який визначає, який Контролер повинен бути викликаний,
після чого, відправляє запит в потрібний Контролер.
Контролер приймає запит і викликає відповідний службовий метод, заснований
на GET або POST. Викликаний метод визначає дані Моделі, засновані на
певній бізнес-логікою і повертає вDispatcherServlet ім'я Віда (View).
За допомогою інтерфейсу ViewResolver DispatcherServlet визначає, який Вид
потрібно використовувати на підставі отриманого імені.
Після того, як Вид (View) Створений, DispatcherServlet відправляє дані Моделі
у вигляді атрибутів в Вид, який в кінцевому підсумку відображається в
браузері.
визначення контролера

DispatcherServlet відправляє запит контролерам для виконання певних функцій. анотація


@Controllerannotation вказує, що конкретний клас є контролером. анотація @RequestMapping
використовується для мапінг (зв'язування) з URL для всього класу або для конкретного методу
обробника.

@Controller
@RequestMapping( "/ Hello")
public class HelloController {
@RequestMapping(Method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute( "Message", "Hello Spring MVC Framework!");
return "hello";
}
}
визначення контролера
анотація Controller визначає клас як контролер Spring MVC. В першому випадку, @RequestMapping
вказує, що Усе методи в даному контролері відносяться до URL-адресою "/hello ". Наступна анотація
@RequestMapping(Method = RequestMethod.GET) використовується для оголошення методу
printHello() як дефолтного методу для обробки HTTP-запитів GET (в даному контролері). ви можете
визначити будь-який інший метод як обробник всіх POST-запитів по даному URL-адресою.

ви можете написати вищевказаний контролер по-іншому, вказавши додаткові атрибути для анотації
@RequestMapping наступним чином:

@Controller
public class HelloController {
@RequestMapping(Value = "/ hello", method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute( "Message", "Hello Spring MVC Framework!");
return "hello";
}
}
визначення контролера
Атрибут «value»Вказує URL, з яким ми пов'язуємо цей метод
(value = "/hello"), Далі вказується, що цей метод буде обробляти
GET-запити (method = RequestMethod.GET). Також, потрібно
відзначити важливі моменти щодо наведеного вище контролера:

Ви визначаєте бізнес-логіку всередині пов'язаного таким чином


службовогометоду. З нього Ви можете викликати будь-які інші
методи.
Грунтуючись на заданій бізнес-логікою, в рамках цього методу
Ви створюєте Модель (Model). Ви можете додаватиатрибути
Моделі, які будуть додані в Вид (View). В наведеному вище
прикладі ми створюємо Модель з атрибутом «message».
Даний службовий метод повертає ім'я Віда у вигляді рядка
String. В даному випадку, запитуваний Вид має ім'я «hello».
створення виду (JSP)
Spring MVC підтримує безліч типів видів для різних технологій відображення сторінки. В томучислі - JSP,
HTML, PDF, Excel, XML, Velocity templates, XSLT, JSON, канали Atom і RSS, JasperReports і ін. алечастіше
всього використовуються шаблони JSP, написані при допомоги JSTL.

Давайте напишемо простий вид «hello » в /WEB-INF / hello /hello.jsp:

<Html>
<Head>
<Title> Hello Spring MVC </ title>
</ Head>

<Body>
<H2> $ {message} </ h2>
</ Body>
</ Html>

В даному випадку, змінна $ {message} виводить той самий атрибут, встановлений нами в контролері.
усередині виду ви можете відобразити будь-який кількість атрибутів.
опис тестового WEB-додатки

За базу взято Spring Framework, Який дозволяє спростити


написання таких додатків. система збиранняMaven.

необхідно:
1. Додати підтримку Spring Frameworkдля обраної IDE. Як
приклад наведемо кроки в IDEEclipse. В менюHelp ->
Eclipse Marketplace.
вибираємо модуль Spring.
Імпортуємо проект вIDE. File -> Import -> Existing Maven
Project
3. Чекаємо завантаження всіх залежностей (бібліотек) і самого проекту.

4. Для IntelliJ інструкція по підключенню плагіна знаходиться за посиланням:


https://www.jetbrains.com/help/idea/spring-support.html

5. Запускаємо проект:
Заходимо в браузер за адресою http: // localhost: 8080 / і
перевіряємо роботу програми:
Структура проекту:
структура проекту:

 ua.nure.st.kpp.example.demo - пакет містить головний клас програми DemoApplication.java і


файл конфігурації для Bootstrap WebMvcConfig.java
 ua.nure.st.kpp.example.demo.controller - пакет містить клас всіх контролерів (оброблювачів
запитів від браузера) StudentsController
 ua.nure.st.kpp.example.demo.dao - пакет містить файли реалізації роботи з даними (DAO).
• IDAO - інтерфейс містить Усе методи (DAO).
• enum TypeDAO - перерахування для вибору типу (DAO).
• MySQLDAO - реалізація (DAO) для MySQL.
• CollectionLDAO - реалізація (DAO) для списку (без використання БД для перевірки)
• DAOFactory - фабричний метод для вибору типу (DAO). (БД або колекція).
 ua.nure.st.kpp.example.demo.entity - пакет містить клас Student, описує сутність студента.
 templates - знаходяться Усе шаблони html сторінок.
Імпортувати БД для прикладу (MySQL).
запуститиMySQL, в MySQLWorkbench меню імпорт
завантажити backup тестової БД студентів
Example_Studs_DB.backup. Перед цим створивши
порожню БД"Studs".
9.підключити MySQLDAO. У файлі StudentsController
замінити рядки
private IDAO dao =
DAOFactory.getDAOInstance(TypeDAO.COLLECTION);
// private IDAO dao =
DAOFactory.getDAOInstance(TypeDAO.MySQL);
10. Перевірити роботу програми з новим DAO.
11. змінити код прикладу на своє завдання. измененить
файли StudentsController, MySQLDAO, CollectionLDAO,
пакет ua.nure.st.kpp.example.demo.entity і шаблони
HTML сторінок.
12. Провести експерименти роботи пріложеніяс
використанням двох видів DAO.

You might also like