Java EE 6: JSF vs Servlet + JSP. Должен ли я беспокоиться о изучении JSF?

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

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

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

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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

Возможно, вам будет легче подумать об этом, чтобы избежать написания JavaScript самостоятельно.

Ответ 4

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

Ответ 5

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

"Должен ли я учиться...?"

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