Это зависит от точки зрения (намерение каламбура).
На большом архитектурном рисунке ваш собственный код JSF - это V :
M - бизнес-домен / уровень обслуживания (например, EJB / JPA / DAO)
V - Ваш код JSF
C - FacesServlet
На изображении разработчика архитектурный V , в свою очередь, делится, как показано ниже:
M - Сущность
V - Facelets / JSP page
C - Управляемый боб
На меньшем клиентском изображении разработчик V , в свою очередь, делится, как показано ниже:
M - дерево компонентов JSF
V - Рендеринг вывода HTML
C - Клиент (веб-браузер)
На еще меньшем изображении JavaScript клиент V , в свою очередь, делится, как показано ниже:
M - дерево HTML DOM
V - Визуальное представление
C - Функции прослушивателя событий (взаимодействие с конечным пользователем и Ajax)
Так что это в основном M (M (M (MVC) C) C) C;)
Обратите внимание, что некоторые закуски и даже некоторые - очень простые & mdash; учебные пособия смешивают / копируют / выравнивают свойства сущности в управляемом компоненте, что фактически делает контроллер моделью. Само собой разумеется, что это плохой дизайн (то есть не чистый дизайн MVC).
Фрагменты кода в следующих ответах иллюстрируют правильный подход MVC:
В книге Полное руководство по JSF в Java EE 8 , в главе 8 "Задние компоненты", стр. 276, приведенная ниже диаграмма Венна используется для иллюстрации положения компонента поддержки в MVC парадигма в контексте, относящемся к разработчику JSF. Отказ от авторских прав: книга написана мной, а фотография создана мной.