Нет, JSF не похож на GWT.Идея другая.Но давайте начнем с самого начала.
Сервлеты на самом деле не являются альтернативой JSP.JSP - это технология, отвечающая за часть View в шаблоне проектирования Model-View-Controller.Сервлеты обычно играют роль Контроллера.
В типичном сценарии Сервлет получает запрос от пользователя, анализирует его и вызывает бизнес-логику (Модель) - это может быть просто набор классов Java или компонентов EJB или что-то ещекоторый вычисляет что-то, обращается к базе данных и т. д. Затем сервлет получает данные из бизнес-логики (если есть) и перенаправляет пользователя на соответствующий элемент View - JSP, страницу чистого HTML, некоторый механизм шаблонов и т. д.
JSFэто своего рода слой над серверами JSP +, который облегчает жизнь программистам (хотя многие бы сильно с этим согласились :))
Страница JSF - это в основном страница JSP, которая использует набор специализированных тегов - компонентов (JSF).родные теги или теги RichFaces или теги ICE Faces).Эти теги могут быть написаны на Java, могут ограничивать JavaScript, CSS.В конечном итоге эти теги генерируют HTML, представляющий «компонент», например, необычную таблицу с возможностью сортировки.
Таким образом, у вас есть, например, компонент, который вы размещаете на странице JSP, и он представляет собой красиво выглядящую таблицу.
Кроме того, JSF оснащен стандартным контроллером, который не написан на Java, но являетсянабор правил навигации между страницами, написанными на XML.
Еще одним элементом являются JSF Beans, которые привязаны к страницам JSF и автоматически заполняются данными, взятыми с этих страниц.Часто это довольно просто - пользователь заполняет форму, которая является частью страницы JSF (в форме также используются специализированные теги - компоненты).Как только эта форма отправлена, класс JSF Bean заполняется данными, и вызывается метод действия.Метод action возвращает строку, которая используется для идентификации страницы, на которую следует перенаправить пользователя (правило взято из конфигурации контроллера XML).
Так что в случае JSF часть внешнего интерфейса генерируется в бэкэнде - теги JSF(или компоненты, как их называют люди) интерпретируются в бэкэнде, и бэкэнд генерирует из них HTML.
Это можно сравнить с технологиями, которые разделяют интерфейс и бэкэнд.Backend получает и возвращает данные в виде XML или, чаще всего, JSON, и обменивается ими с внешней частью приложения.Внешний интерфейс может быть написан на JavaScript, Flex и т. Д. Таким образом, внутренний интерфейс и внешний интерфейс полностью разделены.