А.Н.Лаврёнов, 2020 Cоздание веб приложений
17.04.2020
Лекция 03
по дисциплине
«Cоздание web-приложений »
Учитесь работать
эффективно и аккуратно
Тема 7 : Технология разработки web-приложений
ASP.Net MVC. Проектирование web-приложений
Тема 8 : Java разработка web-приложения
Докладчик: Лаврёнов Александр Николаевич
доцент кафедры информационных технологий,
кандидат физико-математических наук
Телефон рабочий: +375-17-291-21-01
Кабинет: 1-4
E-mail: [email protected]
А.Н.Лаврёнов, 2020 Cоздание веб приложений
17.04.2020
2
Тема 7. Технология разработки web-приложений
ASP.Net MVC. Проектирование web-приложений
Понятие MVC шаблона. Разработка компонент
MVC.
Подходы к разработке web приложений.
Архитектура web-приложений. Рекомендации по
разработке архитектуры web-приложений.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Разработка веб-приложений
3
• Простой протокол передачи данных HTTP
• Простые стандарты описания интерфейса HTML/CSS
• Простой принцип работы «запрос-ответ»
• Абстракции для упрощения разработки:
– Простые – классические ASP, PHP
– Сложные – ASP.NET, JSP
– Гибкие – MVC
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Паттерн Model-View-Controller
• Впервые описан в 1979 году– Trygve M. H. Reenskaug/MVC—XEROX PARC 1978-79
• Предназначен для отделения данных и логики
от интерфейса
• Реализаций огромное множество:ASP.NET MVC, Maverick.NET, Monorail, ProMesh.NET,
PureMVC, Mach-II, Model-Glue, FuseBox, Aranea, Cocoon,
Grails, GWT, Spring, Struts, Stripes, Tapestry, WebObjects,
Wicket, JSF, SproutCore, Wawemaker, Dojo, Catalyst,
CGI:Application, Solstice, Gantry, CakePHP, Joomla, Odin
Assemble, Prado, Solar, Zand Framework, Symfony, Django,
Pylons, Enthought, Zope, web2py, Camping, Merb, Nitro,
Ramaze, Ruby on Rails, XForms
4
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Термин MVC
MVC – model-view-controller.
Модели, которые содержат или представляют данные,
с которыми работают пользователи.
Представления, которые используются для того, чтобы
обработать некоторые части модели в качестве
пользовательского интерфейса.
Контроллеры, которые обрабатывает входящие
запросы, выполняют операции для модели и выбирают
представления для показа пользователю.
5
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Паттерн Model-View-Controller
6
• Model (модель) — модель данных
• View (представление) – интерфейс
• Controller (контроллер)— логика
Model
View Controller
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Визуализация MVC паттерна
7
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Почему MVC для веб-приложений?
8
• Внешний вид страниц часто изменяется
• Иногда нужно несколько вариантов представления одной и той же страницы
– Разные браузеры (IE, FireFox, Safari, Opera, ...)
– Разные платформы (PC, телефон, КПК, ...)
– Разные модели отображения (графические, текстовые, ...)
• Тестирование приложения без зависимости от интерфейса значительно проще
А.Н.Лаврёнов, 2020 Cоздание веб приложений
ASP.NET MVC Framework
9
• Набор компонентов для создания приложений, основанных на подходе MVC
• Статус MVC Framework - Release Candidate 2
– Поддержка Microsoft (включая jQuery)
– Исходный код открыт
• MVCContrib
– Проект сообщества по расширению возможностей MVC Framework
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Запросы в MVC Framework
Браузер Сервер/Product/List/2
ProductController
(Controller)
Product
(Model) БД
Edit
(View)
/Product/Edit/3
List
(View)
10
А.Н.Лаврёнов, 2020 Cоздание веб приложений
ASP.NET MVC(Model2)
11
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Жизненный цикл запроса
12
ЗапросТаблица
маршрутовКонтроллер
Действие контроллера
ПредставлениеОтвет
(разметка)
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Проект MVC Framework
1
2
3
4
Таблица маршрутизации
Контроллер
Модель
Представление
13
А.Н.Лаврёнов, 2020 Cоздание веб приложений
ASP.NET: MVC и WebForms?
14
• ASP.NET – платформа, лежащая в
основе MVC фреймворка
• MVC и WebForms – два подхода к
созданию веб-приложений на
платформе ASP.NET
• Возможность выбора – это хорошо!
А.Н.Лаврёнов, 2020 Cоздание веб приложений
ASP.NET предоставляет инфраструктуру
15
• Модель провайдеров
• Механизмы кеширования
• Шаблоны страниц
• Состояние сеансов пользователей
• Обработчики страниц
• Управление клиентским кодом
• Управление данными
• Контекст запроса и ответа
• И другое...
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Web Forms
16
• Хранение состояния между
обращениями на сервер
• Компонентная модель серверных
элементов управления
• События элементов управления
• Широкая поддержка графической и
декларативной разработки
• Расширяемость «за рамками» сложна
А.Н.Лаврёнов, 2020 Cоздание веб приложений
MVC Framework
17
• Разделение логики и представления
• Прозрачность обработки запроса
• Легковесные объекты
• Простое тестирование
• Отчуждаемые компоненты
• Широкие возможности по расширению
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Преимущества MVC
• Архитектура
• Расширяемость
• Жесткий контроль над HTTP и
HTML
• Тестируемость
• Система маршрутизации
18
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Сравнение с WebForms
WebForms:
1) ViewState и его размер, что
виляет на размер страницы
и скорость ее загрузки
2) Страница проживает весь
этап жизненного цикла
3) Логика UI тесно связана с
кодом и таким образом,
сложно отделима
4) можно производить unit-
тистирование, таким
образом сложно
использовать подход TDD
MVC:
1) Полный контроль на
генерируемым HTML
2) Чистый HTML и URL
3) Разделение UI и логики
4) Возможность тестирования
5) Модульность и
заменяемость компонентов
6) Нет ViewState
7) Простая интеграция с
современными JS
технологиями и
фреймворками
19
А.Н.Лаврёнов, 2020 Cоздание веб приложений
ASP.Net MVC Pipeline
20
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Процесс разработки с MVC Framework
1. Структуры данных - Модель
2. Структура приложения -
Маршрутизация
3. Логика работы - Контроллеры
4. Интерфейс пользователя -
Представление
5. Автоматическое тестирование -
Счастье
21
Жизненный цикл ASP.NET
MVC
22
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Процесс разработки обычного ПО
• Разработка ПО это творческий процесс,
который ведут к созданию инновационных
программных продуктов и систем.
• Процесс разработки ПО – это не единый
монолитный блок работ, который
– принимает на входе некоторые идеи о новом
приложении,
– в качестве результата выдает решение
(продукт), полностью соответствующее
данной идеи.
23
А.Н.Лаврёнов, 2020 Cоздание веб приложений
План разработки web-приложения
1. Сформулировать цель создания сайта.
2. Построить внешний вид сайта.
3. Определить целевую аудиторию.
4. Тщательно спланировать требования к
контенту.
5. Выбрать правильные инструменты для
работы.
Для динамического web-сайта
24
А.Н.Лаврёнов, 2020 Cоздание веб приложений
17.04.2020
25
А.Н.Лаврёнов, 2020 Cоздание веб приложений
17.04.2020
26
Тема 8. Java разработка web-приложения
Платформа Java. Спецификация Java Platform Enterprise
Edition (J2EE). Понятие Application Server. Обзор технологий
платформы J2EE.
Распределенные многоуровневые приложения. J2EE клиенты
(web-клиент, клиент приложения). Web компоненты (сервлеты,
страницы JSP). Корпоративные и\или бизнес компоненты. Роли в
разработке ПО.
Спецификация Servlet. Назначение. Назначение и принципы
применения. Спецификация JSP. Назначение. Основные
возможности. Модели web-приложений на основе технологий
сервлетов и JSP.
Обзор IDE средств для программирования на Java: среды
разработки IntelliJ IDEA, NetBeans, Eclipse. Сборщики Ant, Maven.
Технология JDBC. Состав и архитектура JDBC. Объектная
модель JDBC API. Применение JDBC API. Структура jdbc-
приложения
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
27
J2EE - это не конкретный продукт, а набор
спецификаций, устанавливающих правила, которых
следует придерживаться поставщикам конкретной
реализации платформы J2EE, а также
разработчикам корпоративных приложений.
Цифра "2" в названии спецификации связана с тем, что
все технологии, охватываемые спецификациями
J2EE, базируются на инструментальном комплекте
поддержки разработок в среде Java - JDK (Java
Development Kit) версии 1.2 и старше.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
28
Java 2 Platform, Enterprise Edition (J2EE) определяет
стандарт для разработки многоуровневых
корпоративных приложений.
Java 2 Enterprise Edition - это комплекс
взаимодействующих Java-технологий, базирующихся
на спецификациях, разработанных фирмой Sun
Microsystems (http://java.sun.com/j2ee/),
представляющих стандарт разработки серверных
приложений уровня предприятия.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
29
Технологии J2EE ориентированы на разработку
серверной стороны приложения и облегчают, в
первую очередь, процесс эффективной реализации
среднего уровня (Middle tier), содержащего бизнес-
логику.
Стандарт Java EE расширяет платформу Java Standard
Edition (Java SE) добавляя поддержку веб-сервисов,
модели бизнес компонентов, API управления,
коммуникационных протоколов, распределенных и
веб-приложений. Веб-приложения являются лишь
частью того, что описывает Java EE.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
30
Стандартный Java EE сервер приложений должен
поддерживать такие технологии как EJB (сервер и
контейнер), JNDI, JMS (Java Message Service), JTA
(Java Transaction API), архитектуру J2EE Connector.
Java EE задает контейнеры для серверных
приложений, сервлетов, EJB компонентов.
Такие контейнеры предоставляют функциональность,
позволяющую устанавливать, сохранять и выполнять
поддерживаемые компоненты.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
31
Java EE также предоставляет стандартную архитектуру
для взаимодействия Java EE приложений и серверов
приложений с гетерогенными корпоративными
информационными системами, такими как ERP-
системы, мейнфреймы, системы баз данных и т.д.
Архитектура Java EE Connector предоставляет
средства взаимодействия с корпоративными
системами используя стандартный интерфейс,
известный как адаптер ресурсов (Resource adapter).
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
32
J2EE-сервер
EJB-контейнер
Web-контейнер
J2EE - cервисы,
адаптеры, ресурсы
Приложение 3
- EJB-модуль 1
- EJB-модуль 2
- Web-модуль 1Приложение 2
- EJB-модуль 1
- EJB-модуль 2
- Web-модуль 1
- Web-модуль 2
Приложение 1
- EJB-модуль 1
- EJB-модуль 2
- Web-модуль 1
Сервис:
Java Naming Directory (JNDI)
– универсальный сервис
хранения объектов
в иерархической структуре
имен (аналогично файловой
системе)
Ресурс:
DataSource
- объект, позволяющий
приложению
получить доступ к
соединению к БД
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
33
Платформа J2EE использует модель многоуровневого
распределенного приложения.
Логически приложение разделено на компоненты в соответствии с
их функциональностью.
Различные компоненты, составляющие J2EE-приложение,
установлены на различных компьютерах (слоях) в зависимости от
их уровня в многоуровневой среде J2EE, которой данный компонент
принадлежит.
• Компоненты клиентского уровня работают на клиентской
машине.
• Компоненты web-уровня работают на J2EE-сервере.
• Компоненты бизнес-уровня работают на J2EE-сервере.
• Программное обеспечение уровня корпоративной
информационной системы (EIS) работает на EIS-сервере.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
34
Приложение Java EE может состоять из нескольких
компонентов, таких как, например, EJB, веб-модули,
адаптеры ресурсов, клиентские модули J2EE.
Каждый из компонентов может иметь свой дескриптор
развертывания – XML файл, описывающий
компонент.
Для разворачивания Java EE компонентов применяется
файл в формате «Java архив» (JAR), который
расширяется несколькими дополнительными
форматами в зависимости от того или иного типа
компонента. Формат JAR основан на формате ZIP.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
35
JAR файл может содержать Java классы, XML файлы,
вспомогательные ресурсы, статические HTML файлы
и другие.
Стандартное Java веб-приложение разворачивается в
WAR (Web Application Archive) файле, который
является JAR файлом с расширением WAR.
Стандартное Java EE приложение разворачивается в
EAR (Enterprise Application Archive) файле, который
является JAR файлом с расширением EAR.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
36
WAR файл - это специализированный JAR файл,
содержащий такие компоненты веб-приложения как
сервлеты, JSP файлы, HTML файлы, дескрипторы
развертывания, библиотеки классов и тому
подобное.
WAR файл может быть развернут на веб-сервере,
таком как Tomcat.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Платформа J2EE
37
EAR файл – это специализированный JAR файл,
содержащий компоненты Java EE приложения, такие
как веб-приложения (WAR), EJB, адаптеры ресурсов
и так далее.
Файл EAR может быть развернут на сервере
приложений Java EE, таком как JBoss, WebLogic или
WebSphere.
Сервер приложений Java EE загружает EAR файлы в
процессе выполнения и устанавливает
обнаруженные в нем компоненты на основе
инструкций, описанных в дескрипторе развертывания
каждого компонента.
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Понятие web-компонента
38
• Согласно спецификации J2EE web-компонентами являются– Сервлеты
– JSP-страницы
– Фильтры
– Слушатели событий
• Управление работой web-компонентов возлагается на web-контейнер (сервер web-приложений)
• Спецификация J2EE содержит основные понятия и сведения о технологиях, применяемых в рамках J2EE-платформы. Спецификация доступна по адресу:
http://www.oracle.com/technetwork/java/javaee/downloads/index.html
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Что такое web-контейнер?
• Web-контейнер – это инструментальный программный модуль, который управляет сервлетами и JSP-страницами, который работаетв среде J2EE-сервера
J2EE Server
Web-броузер
Web Container
JSP Servlet
EJB Container
Enterprise
Bean
Enterprise
Bean
Другой
клиент
СУБД
39
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Понятие web-контейнера
40
• Web-контейнер –стандартизованный
компонент, который занимается системной
поддержкой прикладных программных
компонентов и обеспечивает их жизненный
цикл в соответствии с правилами,
определенными в спецификациях
• Функции web-контейнера
– Управление жизненным циклом компонентов
– Управление безопасностью
– Управление конкурентным доступом
– Перенаправление запросов
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Jakarta Tomcat 6.x, 7.х и 8.х
• входит в состав Sun Reference Implementation
• Линейка 6.x (version 6.0.43, 14.01.2014)– Спецификация Servlets – 2.5
– Спецификация JSP – 2.1
• Линейка 7.x (version 7.0.59, 02.04.2014)– Спецификация Servlets – 3.0
– Спецификация JSP – 2.2
• Линейка 8.х (version 8.0.32, 02.04. 2016)– Спецификация Servlets – 3.1
– Спецификация JSP – 2.3
41
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Получение и установка Tomcat
• http://jakarta.apache.org
• Полностью написан на Java
• Доступен:– Binary Distributions
• zip
• tar.gz
• 32-bit Windows zip
• 64-bit Windows zip
• 64-bit Itanium Windows zip
• 32-bit/64-bit Windows Service Installer
– Full documentation:• tar.gz
42
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Запуск/останов Tomcat
• JAVA_HOME=C:\jdk1.7
• /bin/startup.bat
• /bin/catalina.bat start
• /bin/shutdown.bat
43
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Структура каталогов
44
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Работа нескольких web-компонентов
в одном web-контейнере
45
Browser1
Browser2
Browser3
web-контейнер
8087
GET http://evm.kture:8087/web-comp1
Web-comp1
Web-comp2
Thread1
Thread3
Thread2
200 OK html
GET http://evm.kture:8087/web-comp2
200 OKhtml
GET http://evm.kture:8087/web-comp1
200 OKhtml
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Сервлет
46
• Сервлет - это самостоятельный web-компонент, который, согласно спецификации J2EE, функционирует под управлением web-контейнера
• Сервлет в ответ на полученный от клиента HTTP-запрос динамически генерирует HTTP-ответ: HTML-страницу, XML-документ или другой документ, контент которого корректно отображается в стандартном браузере
• Спецификация технологии сервлетов находится по адресам: http://www.oracle.com/technetwork/java/index-jsp-135475.html
http://jcp.org/en/jsr/detail?id=315
– Последняя версия спецификации – 3.2
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Структура web-приложения
47
Компоненты типичного Java EE приложения
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Структура web-приложения
48
Традиционно, корпоративное Java EE приложение
определяется как набор следующих компонентов и
технологий:
• The Java Management Extensions (JMX) API
• Java API for XML Processing (JAXP)
• The Java API for XML-based RPC (JAX-
RPC)
• The Java Architecture for XML Binding
(JAXB)
• The SOAP with Attachments API for Java
(SAAJ)
• JavaServer Pages или JavaServer Faces
• Сервисы аутентификации и авторизации
(JAAS)
• JavaBeans Activation Framework (JAF)
• Java Database Connectivity (JDBC)
framework
• EAR файлы
• Java сервлеты
• Enterprise JavaBeans (EJB)
• Архитектура J2EE Connector
• JavaMail
• Java Message Service (JMS)
• Java Persistence API (JPA)
• Java Transaction API (JTA)
А.Н.Лаврёнов, 2020 Cоздание веб приложений
Структура web-приложения
49
В свою очередь, веб-приложение Java объединяет подмножество
компонентов и технологий корпоративного приложения, таких
как:
• WAR файлы
• Java сервлеты
• JavaServer Faces или JavaServer Pages
• Java Database Connectivity (JDBC) framework
Популярные фреймворки, такие как Apache Struts, Spring, Hibernate
и другие стирают традиционную грань между корпоративными
приложениями и веб-приложениями. Каждый фреймворк
предлагает свою точку зрения на то, как решить ту или иную
задачу. Каждый фреймворк пытается более эффективно
решить те или иные сложности, возможно используя набор
дополнительных технологий.