Архитектура JSP модели 2

JSP Model 2 — это сложный шаблон проектирования , используемый при разработке Java веб-приложений , который отделяет отображение контента от логики, используемой для получения контента и управления им. Поскольку Модель 2 обеспечивает разделение логики и отображения, ее обычно связывают с парадигмой модель-представление-контроллер (MVC). Хотя точная форма «Модели» MVC никогда не была указана в проекте Модели 2, в ряде публикаций рекомендуется использовать формализованный уровень для хранения кода модели MVC. EJB для Например, в Java BluePrints изначально рекомендовалось использовать инкапсуляции модели MVC.
В приложении Модели 2 запросы от клиентского браузера передаются контроллеру . Контроллер выполняет всю логику, необходимую для получения правильного контента для отображения. Затем он помещает содержимое в запрос (обычно в форме JavaBean или POJO ) и решает, какому представлению будет передан запрос. Затем представление отображает содержимое, переданное контроллером.
Модель 2 рекомендуется для приложений среднего и большого размера.
История
[ редактировать ]В 1998 году Sun Microsystems опубликовала предварительную версию спецификации JavaServer Pages версии 0.92. [1] В этой спецификации Sun изложила два метода использования страниц JSP. Первая модель (называемая « моделью 1 » из-за ее порядка в документе) представляла собой упрощенную модель, в которой страницы JSP представляли собой автономные, несвязанные объекты. Логика могла содержаться внутри самой страницы, а навигация между страницами обычно осуществлялась с помощью гиперссылок. Это соответствовало распространенному в то время использованию технологии шаблонов.
ColdFusion и Active Server Pages являются примерами современных технологий, в которых также реализована эта модель.
Вторая модель, упомянутая в документе («модель 2» в заказе), представляла собой улучшенный метод, сочетающий сервлетов технологию с технологией JSP. Конкретное отличие заключалось в том, что сервлет перехватывал запрос, помещал содержимое для отображения в атрибут запроса (обычно представленный JavaBean), а затем вызывал JSP для отображения содержимого в желаемом выходном формате. Эта модель отличалась от предыдущей модели тем, что в качестве чистого шаблонизатора использовалась технология JSP. Вся логика была выделена в сервлет, оставив JSP единоличную ответственность за обработку вывода предоставленного контента.
В декабре 1999 года журнал JavaWorld опубликовал статью Говинда Сешадри под названием « Понимание архитектуры JavaServer Pages Model 2» . [2] В этой статье Говинд совершил две важные вехи в использовании термина «Модель 2». Первой вехой стало официальное оформление термина «Модель 2» как архитектурного образца, а не как одного из двух возможных вариантов. Второй вехой стало заявление о том, что Модель 2 обеспечивает архитектуру MVC для веб-программного обеспечения. [3]
Говинд считал, что, поскольку архитектура «Модели 2» отделила логику от JSP и поместила ее в сервлет, эти две части можно рассматривать как «Представление» и «Контроллер» (соответственно) в архитектуре MVC. Часть архитектуры MVC «Модель» Говинд оставил открытой, предположив, что практически любая структура данных может соответствовать требованиям. Конкретным примером, использованным в статье, был список векторов , хранящийся в сеансе пользователя.
В марте 2000 года Apache Struts был выпущен проект . Этот проект формализовал разделение между представлением и контроллером и заявил о реализации шаблона «Модель 2». [3] И снова реализация «Модели» осталась неопределенной в расчете на то, что разработчики программного обеспечения внесут соответствующее решение. Взаимодействие с базой данных через JDBC и EJB — это варианты, предложенные на домашней странице Struts. Совсем недавно Hibernate , iBatis и Object Relational Bridge были перечислены как более современные варианты, которые можно использовать для модели. [4]
С момента выпуска Struts появился ряд конкурирующих фреймворков. Многие из этих фреймворков также утверждают, что реализуют «Модель 2» и «MVC». В результате эти два термина стали в сознании разработчиков синонимами. Это привело к использованию термина «MVC Model 2» или для краткости «MVC2».
Заблуждения
[ редактировать ]Распространенным заблуждением является то, что для реализации Модели 2 необходим формализованный шаблон MVC. Однако Java BluePrints специально предостерегает от такой интерпретации: [5]
В литературе по технологии веб-уровня на платформе J2EE часто используются термины «Модель 1» и «Модель 2» без объяснения причин. Эта терминология взята из ранних проектов спецификации JSP, в которых описывались два основных шаблона использования страниц JSP. Хотя эти термины исчезли из спецификации, они продолжают широко использоваться. Модель 1 и Модель 2 просто относятся к отсутствию или присутствию (соответственно) сервлета-контроллера, который отправляет запросы с клиентского уровня и выбирает представления.
Более того, термин «MVC2» привел многих к ошибочному мнению, что Модель 2 представляет собой шаблон MVC следующего поколения. Фактически, MVC2 — это просто сокращение термина «Модель MVC 2». [6]
Путаница с термином «MVC2» привела к дополнительной путанице в отношении кода Модели 1, что привело к повсеместному использованию несуществующего термина «MVC1».
См. также
[ редактировать ]- Apache Struts — это платформа с открытым исходным кодом для реализации веб-приложений на основе архитектуры Model 2.
Ссылки
[ редактировать ]- ^ Спецификация JSP 0.92
- ^ Сешадри, Говинд (29 декабря 1999 г.). «Понимание архитектуры JavaServer Pages Model 2» . JavaWorld . Проверено 17 июля 2020 г.
- ^ Jump up to: а б Как Struts реализует модель 2 (истоки модели 1/модели 2)
- ^ «Домашняя страница Struts 1.x» . Архивировано из оригинала 23 сентября 2010 г. Проверено 5 октября 2010 г.
- ^ Java BluePrints 4.4.1: Структурирование веб-уровня
- ^ Struts, реализация MVC с открытым исходным кодом.
Внешние ссылки
[ редактировать ]- Сешадри, Говинд (29 декабря 1999 г.). «Понимание архитектуры JavaServer Pages Model 2» . JavaWorld . Проверено 17 июля 2020 г.
- История MVC, включая модель 2
- Шаблоны представления ASP.NET . В этой статье Дино Эспозито обсуждает, как Model2 также используется в ASP.NET MVC.