Model

advertisement
Где хранить данные в webприложении
*.setAttribute(“name”, value);
*.getAttribute(“name”) // value
page –JSP
страница
request – HTTP
запрос
session –
сессия
пользователя
application –
веб-приложение
Cookies
Static Java class
/ Singleton
База данных
/ Файловая система
Механизм работы HTTPсессии
http://mysite.org/myapp
JSESSIONID нет в HTTP заголовке
новый пользователь.
генерируем JSESSIONID
сохраняем в памяти сервера
Set-Cookie: JSESSIONID=123456; path=/myapp
GET http://mysite.org/myapp
Cookie: JSESSIONID=123456
Можно добавить свой объект в сессию:
Request.getSession().setAttribute(“user”, “John”)
JSESSIONID найден
Пользователь уже заходил
Все объекты в сессии сохранились:
Request.getSession().getAttribute(“user”) // John
Альтернативы?
Model View Controller (MVC)
3. Накладывает модель на шаблон представления
Model
View
Модель отображаемых
данных
Шаблон представления
данных
2. Определяет нужное view и
передает ему управление
1. Получает или сохраняет модель в БД
Controller
Контроллер запроса
пользователя
Model View Controller в Web-приложении
Model
Model
Модель
отображаемых
Model
Модель
отображаемых
данных
6. Накладывает модель на шаблон,
получая HTML-страницу
Модельданных
отображаемых
данных
View
ШаблонView
представления
View
Шаблонданных
представления
Шаблоны
представления
данных
данных
4. Заполняет модель данными
- Java beans классы
-классы с get/set методами)
5. Выбирает нужное view и передает
ему модель и управление
Controller
Controller
Controller
- Java классы с логикой
приложения
Контроллер запроса
Контроллер
запроса
Контроллеры
конкретных
пользователя
пользователя
запросов
Services
Services
Services
Сервисы приложения
Сервисы
Сервисыприложения
приложения
- Java Server pages или
- XSLT или
- Velocity
- …
- Java классы
приложения
3. Получает данные из БД
2. Ищет конкретный контроллер
и передает ему управление
1. HTTP-запрос
Front Controller
Диспетчер запросов от
пользователей
- DispatcherServlet (всегда один)
Архитектура слоев
приложения
UI Layer
Слой интерфейса пользователя отвечает за взаимодействие с
пользователем
Controllers
Views
Domain
Model
Объектная
модель
данных
приложения
X
Service Layer
X
Слой сервисов приложения отвечает за выполнение бизнеслогики приложения
Services
Data Access Layer
Отвечает за работу приложения с БД
Data Access
Objects (DAOs)
Domain
entities
Задачи MVC-движка
• Реализация MVC: Диспетчер, контроллеры,
представления
• Binding (конвертация HTTP-параметров в объекты
Java - модели)
• Validation (проверка данных модели)
• Поддержка различных типов представлений (JSP,
XSLT, Velocity, Freemarker, Word, Excel)
• I18n / L10n
• Security (Authorization – проверка прав доступа)
• JSP-теги для удобства работы с всеми
возможностями, описанными выше
MVC-движки
(миграция подходов идей)
MVC
Дополнения к MVC
• IoC контейнер: Spring, либо включен в
движок
• Управление навигацией по сайту: Spring
WebFlow
• Поддержка со стороны JavaScript: jQuery
• Security: Spring Security
Альтернатива Web-MVC:
Rich UI Component/Event driven
компонентные событийно ориентированные движки
– Java Server Faces
(JSF)
– Google Web Toolkit
(GWT) / Vaadin
– Classic ASP.NET
+ Плюсы
- Минусы
Библиотеки
компонент
Много
сгенерированного
JavaScript
Событийно
ориентированные
интерфейсы более
интуитивные
Плохо ложится на
HTTP-протокол =>
сложная внутренняя
реализация. Высокая
связность страниц веб
приложения
Возможность
хорошей поддержки
для среды
визуального
программирования
обманчивая
внешняя
простота
MVC в мире Rich UI
• MVP (Model View Presenter) – MVC подход для
событийно ориентированных UI библиотек (Java
Swing/SWT, GWT/Vadin, C# WinForms, ASP.NET)
• MVVM (Model View ViewModel) – MVC подхода для
событийно ориентированных UI библиотек с хорошей
поддержкой Data Binding (Silverlight/WPF)
Download