Какие компоненты являются MVC в рамках JSF MVC?
В рамках JSF MVC кто такие Модель, Представление и Контроллер?
3 ответа
Это зависит от точки зрения (каламбур).
В большой архитектурной картине ваш собственный код JSF - это V:
M - бизнес-домен / сервисный уровень (например, EJB / JPA / DAO)
V - Ваш код JSF
C - FacesServlet
На изображении разработчика архитектурный V в свою очередь делится, как показано ниже:
М - Сущность
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, Сервис и DAO
- Создание основных страниц для сущностей, как их связать и какую область действия bean выбрать.
- Передача управляемого EJB-компонента JSF2 в EJB или помещение того, что требуется, в объект передачи
- Фильтр не инициализирует EntityManager
- javax.persistence.TransactionRequiredException в небольшом приложении Facelet
Модель была бы твоей ManagedBean
Vew будет jsp
, XHTML
(хорошо вы можете разместить различные виды здесь)
Контроллер будет FacesServlet
Обновление, надеюсь, эта картина поможет больше
Сервлет Face управляет жизненным циклом Faces, поэтому в этом смысле именно контроллер в сочетании с вашим собственным кодом может вызываться на каждом этапе жизненного цикла.
Java Server Faces - это веб-инфраструктура MVC, где компоненты MVC выглядят следующим образом:
Модель - это класс управляемого компонента, аннотированный @ManagedBean, который имеет свойства для хранения данных и соответствующих методов получения и установки. Класс управляемого компонента также может содержать бизнес-логику. Они также известны как резервные компоненты, которые могут иметь различные области действия, такие как запрос, сеанс, приложение.
Вид - пользовательский интерфейс, отображаемый для клиента, т.е. файлы.xhtml. Он получает данные из управляемых bean-компонентов и отображается как ответ.
Контроллер - javax.servlet.webapp.FacesServlet - это класс централизованных контроллеров, который в основном является сервлетом. Любой запрос, который приходит к JSF, сначала направляется в контроллер FacesServlet. В отличие от JSP, в котором мы пишем свой собственный класс контроллера, в JSF сервлет контроллера является фиксированной частью фреймворка, и мы его не пишем.
MVC flow-