Подтвердить что ты не робот

Понимание JSF как структуры MVC

Я читаю JSF, и я чувствую себя довольно запутанным, почему JSF является MVC-каркасом (или, по крайней мере, какие части принадлежат к какой-либо букве).

Я рассмотрел этот вопрос: Какие компоненты MVC в структуре JSF MVC?

Я читаю там, если вы не смотрите на него в агрегированном виде, модель - это ваша сущность, представление - ваш код XHTML, а контроллер - управляемый bean. Хм... Хорошо, но мнение не очень часто зависит от выполнения дальнейших бизнес-логических вызовов, которые возвращают набор объектов, например, все еще подходит к описанию?

Одна книга, которую я прочитал, описывала ее как управляемую. beans - это своего рода "сообщение", которое используется для вызова бизнес-уровня (модели) сервлетом Faces (Controller), а затем код XHTML - это представление.

Есть так много объяснений и различий, поэтому я не знаю, что или как это понимать.

4b9b3361

Ответ 1

Отчасти из-за того, что в JSF и многих других веб-фреймворках они часто не совсем понятны, части которых соответствуют той части MVC, что шаблон MVC изначально был разработан для настольных приложений.

В настольном приложении узлы M, V и C являются максимальным связующим графом, то есть каждая часть может связываться с каждой другой частью. Например. если модель изменится, она может переместить это изменение в представление. Это особенно заметно при наличии нескольких представлений представления в настольном приложении. Измените его и просмотрите другое обновление в режиме реального времени.

Из-за особенностей клиент/сервер и запросов/ответов веб-приложений классический MVC не отображает 1:1 для большинства веб-фреймворков.

В частности, в JSF отображение выглядит следующим образом:

  • Модель - Услуги /DAO плюс объекты, которые они производят и потребляют. Первой точкой для этого является управляемый bean, но в Java EE (из которого JSF является частью) эти артефакты обычно реализуются соответственно EJB и JPA.
  • Просмотреть - компоненты пользовательского интерфейса и их состав на полную страницу. Это полностью входит в домен JSF и реализуется JSF UIComponent и Facelets соответственно.
  • Контроллер. Координатор трафика, который обрабатывает команды и входящие данные от пользователя, направляет их в нужные части и выбирает представление для отображения. В JSF этот контроллер не записывается, но он уже предоставлен каркасом (это FacesServlet).

Особенно последняя часть часто не совсем понятна: в JSF вы не реализуете контроллер. Следовательно, поддержка bean или любого другого управляемого bean НЕ контроллера.

Первая часть (модель) также не всегда понятна. Бизнес-логика может быть реализована EJB и JPA, но с точки зрения JSF все, на что ссылается привязка значения, является моделью. Это также означает, что название одной из фаз жизненного цикла JSF происходит от: Update Model. На этом этапе JSF выталкивает данные из компонентов пользовательского интерфейса в модель. В этом смысле управляемый beans (JSF) является, таким образом, моделью.

Хотя сам JSF явно не определяет концепцию, часто повторяющееся и конкретное использование управляемого beans называется поддержкой bean.

Для JSF резервная копия bean по-прежнему является моделью, но практически она является сантехническим элементом, который находится в середине модели, представления и контроллера. Поскольку он выполняет некоторые задачи, которые могут рассматриваться как некоторые задачи контроллера, это часто ошибочно воспринимается как контроллер. Но, как объяснялось ранее, это неверно. Он также может выполнять некоторые задачи модели, а иногда и некоторые логики представления.

См. также:

Ответ 2

В минималистской форме это:

  • Модель: все, что вы используете для сохранения (Hibernate, JPA и т.д.) и моделирования данных (Java Beans).
  • Вид: xhtml, jsp и т.д.
  • Контроллер: Mananaged Beans.

JSF дает вам возможность контролировать ваши запросы/ответы. То, как вы создаете модель/просмотр, не напрямую связано с концепцией фреймворка MVC. Это просто вопрос выбора. Концепция MVC связана с организацией кода.

Аналогично Struts - это структура MVC, но она работает главным образом как контроллер.

Думаю, я помогу вам лучше прояснить вашу идею.

Ответ 3

Интересная вещь об управляемой идее bean заключается в том, что она может использоваться как модель (шаблон MVC) или как контроллер (посредник-контроллер MVC, также называемый model-view-adapter), где модель и представление не взаимодействуют напрямую.

В этом последнем случае механизм маршрутизации не является контроллером, так как бизнес-логика содержится в управляемом bean, а Модель - это только модель домена. Тогда имеем:

  • Модель - содержит модель домена, в большинстве случаев представляет собой таблицы в базе данных, которые сохраняются через DAO.

  • Показать - компоненты ui, связанные с bean;

  • Контроллер - управляемый bean, который содержит бизнес-логику и обрабатывает связь между представлением и моделью.

Я думаю, что некоторые люди путают посреднический контроллер MVC как простой MVC, что приводит к возникновению различных объяснений.

Ответ 4

Думаю, все здесь верны. Но основной момент для путаницы возникает для меня от смешивания определений компонентов mvc, исходящих из фреймворка, здесь JSF, с теми компонентами модели и контроллера, которые вы определяете в своем дизайне приложения:

Предположим, что вы изменили JSF на другие веб-интерфейсы пользовательского интерфейса в своем бизнес-приложении: У вас все еще будет "бизнес-модель" и "бизнес-контроллер". (В наших проектах мы просто называем эти компоненты "моделью" и "процессом".) Что это значит: либо вы не можете использовать mvc для описания общей архитектуры приложения, а исключительно для пользовательского интерфейса, или вам, возможно, придется принимать многие контроллеры, такие как компоненты в вашем полном стеке приложений.