В рамках JSF MVC кто такие модель, представление и контроллер?
В рамках JSF MVC кто такие модель, представление и контроллер?
Это зависит от точки зрения (каламбур).
В большой архитектурной картине ваш собственный код JSF - это V :
M - Бизнес-домен / Уровень услуг (например, EJB / JPA / DAO)
V - Ваш код JSF
C - FacesServlet
На изображении разработчика архитектурный V , в свою очередь, можно разделить, как показано ниже:
M - Сущность
V - Facelets / страница JSP
C - Управляемый компонент
На меньшем изображении клиента разработчик V , в свою очередь, делится, как показано ниже:
M - Дерево компонентов JSF
V - Визуализированный вывод HTML
C - Клиент (веб-браузер)
На еще меньшей картинке JavaScript клиент V , в свою очередь, можно разделить, как показано ниже:
M - Дерево HTML DOM
V - Визуальное представление
C - Функции прослушивателя событий (взаимодействие с конечным пользователем и Ajax)
Так что это в основном M (M (M (MVC) C) C) C;)
Обратите внимание, что некоторые начальные и даже некоторые - очень простые - учебные пособия смешивают / копируют / выравнивают свойства объекта в управляемом компоненте, что фактически делает контроллер моделью. Излишне говорить, что это плохой дизайн (т.е. не чистый дизайн MVC).
Фрагменты кода в следующих ответах иллюстрируют правильный подход MVC:
В книге «Полное руководство по JSF в Java EE 8» , в главе 8 «Поддерживающие компоненты», стр. 276, приведенная ниже диаграмма Венна используется для иллюстрации положения поддерживающего bean-компонента в парадигме MVC в контексте, имеющем отношение к разработчику JSF. . Отказ от авторских прав: книга написана мной, а изображение создано мной.
<h:inputText value="#{register.username}">
вместо<h:inputText value="#{register.user.name}">
.M Одел будет ваш
ManagedBean
V IEW бы
jsp
,XHTML
(ну вы можете разместить различные виды здесь)C ontroller будет
FacesServlet
Обновите, надеюсь, эта картинка поможет больше
источник
FacesServlet
это контроллер, то я не могу его расширить. У меня не может быть собственных контроллеров ... Я согласен с Шервином, что Managed Beans - это контроллер. Шервин, как насчет того, чтобы опубликовать свой собственный альтернативный ответ?FacesServlet
которое контролирует.Сервлет Faces управляет жизненным циклом лиц, поэтому в этом смысле это контроллер, объединенный с вашим собственным кодом, который может вызываться на каждой фазе жизненного цикла.
http://www.java-samples.com/images/jsf-lifecycle.gif
источник
Java Server Faces - это веб-фреймворк MVC, в котором компоненты MVC следующие:
Модель - это управляемый класс bean-компонента, аннотированный с помощью @ManagedBean, который имеет свойства для хранения данных и соответствующих методов получения и установки. Класс управляемого bean-компонента также может содержать бизнес-логику. Они также известны как вспомогательные bean-компоненты, которые могут иметь разные области действия, такие как запрос, сеанс, приложение.
Просмотр - пользовательский интерфейс, показываемый клиенту, т.е. файлы .xhtml. Он получает данные от управляемых bean-компонентов и отображает их в качестве ответа.
Контроллер - javax.servlet.webapp.FacesServlet - это класс централизованного контроллера, который по сути является сервлетом. Любой запрос, поступающий в JSF, сначала отправляется контроллеру FacesServlet. В отличие от JSP, в котором мы пишем наш собственный класс контроллера, в JSF сервлет контроллера является фиксированной частью инфраструктуры, и мы не пишем его.
Поток MVC
источник