Java EE 6: JSF против сервлетов + JSP. Стоит ли изучать JSF? - PullRequest
33 голосов
/ 23 апреля 2010

Я пытаюсь познакомиться с Java EE 6, прочитав http://java.sun.com/javaee/6/docs/tutorial/doc/gexaf.html. Я немного озадачен использованием JSF.
Обычно, как бы я ни разрабатывал свое веб-приложение, сервлет работал бы как контроллер, а JSP действовал бы как представление в модели MVC. Так пытается ли JSF заменить эту структуру? Ниже приведена цитата из приведенного выше урока:

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

Не уверен, что если я слишком хорошо понимаю приведенную выше цитату, они не очень хорошо объяснили, что ориентировано на услуги, а не на представление.

Приложение JavaServer Faces может отображать HTTP-запросы на обработку событий для конкретного компонента и управлять компонентами как объектами с состоянием на сервере.

Любой опытный Java-разработчик может дать мне краткий обзор JSF, JSP и Servlet? Должен ли я интегрировать их все или использовать их отдельно в приложении? если да, то какое приложение использует JSF в отличие от сервлетов и JSP

Приложение JavaServer Faces может сопоставлять HTTP-запросы с обработкой событий для конкретного компонента и управлять компонентами как объектами с состоянием на сервере.

Похоже на то, что может делать сервлет, но не уверен насчет manage components as stateful objects on the server. Даже не уверен, что это значит? Заранее спасибо.

Ответы [ 5 ]

31 голосов
/ 23 апреля 2010

JSF в основном позволяет разрабатывать веб-приложения только с объектами модели (JavaBeans) и представлениями (страницы JSP / XHTML). С «простым ванилью» JSP / Servlet вам придется вводить много кода для управления, предварительной обработки, постобработки, сбора данных, проверки, преобразования, прослушивания и т. Д. HTTP-запросов и ответов. И потом, я не говорю о рефакторинге его в высокой (абстрактной) степени, чтобы вы также могли получить такой же результат, как JSF (только класс JavaBean и страница JSP / XHTML для каждого варианта использования).

Ранее я опубликовал более подробный ответ по этому вопросу: В чем разница между JSF, Servlet и JSP?

10 голосов
/ 23 апреля 2010

В JSF используется один конкретный сервлет (сервлет Faces) для обработки всех входящих запросов и отправки их соответствующим компонентам.

JSF - это основанная на компонентах инфраструктура MVC, а JSP - технология представления.
Вы можете использовать JSP с JSF, хотя Facelets является предпочтительной технологией просмотра.

4 голосов
/ 23 апреля 2010

JSF предоставляет уровень абстракции с несколькими обязанностями, но самое важное, он обрабатывает все беспорядочные детали HTML-форм и передачу данных между веб-страницами и Java-бобами POJO (методы getX, setX), что, как известно, трудно сделать правый.

Он также обеспечивает навигацию и в последней версии Java EE 6 доступна элементарная поддержка AJAX, позволяющая легко обновлять веб-страницу по мере ввода данных пользователем.

Возможно, вам будет проще думать об этом, как о способе избежать написания JavaScript самостоятельно.

3 голосов
/ 01 августа 2011

Если вам нравится XML, выберите JSF. В случае, если вы являетесь поклонником actionlistener doPost, doGet и т. д. выберите Servlet и JSP.

2 голосов
/ 23 апреля 2010

JSF Framework призвана упростить интеграцию разработки веб-интерфейсов пользователя. Как сказал @bozho, вы можете смешивать JSP и JSF. Тем не менее, компонент «view» в JSF - это facelets, который можно рассматривать как маленькие UI-виджеты, которые более или менее самодостаточны в отношении стиля DHTML, генерации событий JavaScript и обратного вызова.

«Должен ли я потрудиться учиться ..?»

Не уверен. Я не видел, чтобы JSF набирал так много пара, хотя это было вокруг (Atleast в теории) за последние 5 лет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...