В чем разница между JSF, Servlet и JSP?

Как JSP и Servlet связаны друг с другом? Является ли JSP сервлетом? Как JSP и JSF связаны друг с другом? Является ли JSF каким-то предварительным созданием JSP, подобным ASP.NET-MVC?

15 Solutions collect form web for “В чем разница между JSF, Servlet и JSP?”

JSP (страницы JavaServer)

JSP – это технология просмотра Java, работающая на серверной машине, которая позволяет вам писать текст шаблона на клиентских языках (например, HTML, CSS, JavaScript и т. Д.). JSP поддерживает taglib , которые поддерживаются кусками кода Java, которые позволяют управлять streamом страницы или динамически выводить. Известным taglib является JSTL . JSP также поддерживает язык выражений , который может использоваться для доступа к базовым данным (через атрибуты, доступные на странице, в запросе, в сеансах и в приложениях), в основном в сочетании с taglib.

Когда JSP запрашивается в первый раз или когда веб-приложение запускается, контейнер сервлета будет скомпилировать его в class, расширяющий HttpServlet и использовать его во время жизни веб-приложения. Вы можете найти сгенерированный исходный код в рабочем каталоге сервера. Например, Tomcat , это каталог /work . По запросу JSP контейнер сервлета выполняет скомпилированный JSP-class и отправляет сгенерированный вывод (обычно только HTML / CSS / JS) через веб-сервер по сети на клиентскую сторону, что, в свою очередь, отображает его в веб-браузере.

servlets

Сервлет – это прикладной программный интерфейс Java (API), запущенный на сервере, который перехватывает запросы, сделанные клиентом, и генерирует / отправляет ответ. Известным примером является HttpServlet который предоставляет методы для подключения HTTP- запросов с использованием популярных HTTP-методов, таких как GET и POST . Вы можете настроить HttpServlet для прослушивания определенного шаблона URL-адреса HTTP, который настраивается в web.xml или совсем недавно с Java EE 6 с аннотацией @WebServlet .

Когда сначала запрашивается Servlet или во время запуска веб-приложения, контейнер сервлета создаст экземпляр и сохранит его в памяти во время жизни веб-приложения. Один и тот же экземпляр будет использоваться повторно для каждого входящего запроса, URL которого соответствует шаблону URL сервлета. Вы можете получить доступ к данным запроса с помощью HttpServletRequest и обработать ответ HttpServletResponse . Оба объекта доступны как аргументы метода внутри любого из переопределенных методов HttpServlet , таких как doGet() и doPost() .

JSF (JavaServer Faces)

JSF представляет собой основанную на компонентах среду MVC, которая построена поверх API Servlet и предоставляет компоненты через tags, которые могут использоваться в JSP или любой другой технологии Java, основанной на просмотре, например Facelets . Facelets гораздо более подходит для JSF, чем JSP. Это обеспечивает отличные возможности шаблонов, такие как составные компоненты , в то время как JSP в основном предлагает только для шаблонов, так что вы вынуждены создавать пользовательские компоненты с необработанным кодом Java (что немного непрозрачно и много утомительно работа в JSF), когда вы хотите заменить повторяющуюся группу компонентов на один компонент. Начиная с JSF 2.0, JSP устарела как технология просмотра в пользу Facelets.

Будучи структурой MVC ( Model-View-Controller ), JSF предоставляет FacesServlet как единственный controller запроса-ответа. Он берет на себя всю стандартную и утомительную работу HTTP-запроса / ответа, такую ​​как сбор пользовательского ввода, проверка / преобразование их, размещение их в объектах модели, вызов действий и предоставление ответа. Таким образом, вы получаете в основном страницу JSP или Facelets (XHTML) для View и class JavaBean как Model . Компоненты JSF используются для привязки представления к модели (например, веб-элемент управления ASP.NET), а FacesServlet использует дерево компонентов JSF для выполнения всей работы.

Связанные вопросы

  • Какова альтернатива ASP.NET / PHP для основного streamа Java?
  • Java EE веб-разработки, какие навыки мне нужны?
  • Как работают servlets? Инстанцирование, переменные сеанса и multithreading
  • Что такое джававий и где они используются?
  • Как избежать Java-кода в JSP-файлах?
  • Какие компоненты MVC в структуре JSF MVC?
  • В чем же необходимость JSF, когда пользовательский интерфейс может быть достигнут из CSS, HTML, JavaScript, jQuery?

См. http://www.oracle.com/technetwork/java/faq-137059.html.

Технология JSP является частью семейства технологий Java. Страницы JSP скомпилированы в servlets и могут вызывать компоненты JavaBeans (компоненты) или компоненты Enterprise JavaBeans (корпоративные компоненты) для выполнения обработки на сервере. Таким образом, технология JSP является ключевым компонентом в масштабируемой архитектуре для веб-приложений.

См. https://jcp.org/en/introduction/faq

A: Технология JavaServer Faces является основой для создания пользовательских интерфейсов для веб-приложений. Технология JavaServer Faces включает в себя:

Набор API для: представления компонентов пользовательского интерфейса и управления их состоянием, обработки событий и проверки ввода, определения навигации по страницам и поддержки интернационализации и доступности.

Библиотека пользовательских тегов JavaServer Pages (JSP) для выражения интерфейса JavaServer Faces на странице JSP.

JSP – это специализированный сервлет.

JSF – это набор тегов, которые вы можете использовать с JSP.

С точки зрения браузера / клиента

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

JSF предназначен для более богатых веб-приложений, основанных на событиях. Я вижу событие более зернистым, чем запрос / ответ.

С точки зрения сервера

Страница JSP преобразуется в сервлет и имеет минимальное поведение.

Страница JSF преобразуется в дерево компонентов (с помощью специализированного FacesServlet), и он следует за жизненным циклом компонента, определенным спецификацией.

Сервлеты:

API-интерфейс Java Servlet позволяет разработчикам Java писать серверный код для доставки динамического веб-контента. Как и другие проприетарные API-интерфейсы веб-серверов, API-интерфейс Java Servlet предлагает улучшенную производительность по сравнению с CGI; однако он имеет некоторые ключевые дополнительные преимущества. Поскольку servlets были закодированы на Java, они обеспечивают объектно-ориентированный подход (OO) и, что более важно, могут работать на любой платформе. Таким образом, тот же код был переносимым на любой хост, поддерживающий Java. Сервлеты в значительной степени способствовали популярности Java, поскольку она стала широко используемой технологией для разработки веб-приложений на стороне сервера.

JSP:

JSP построен поверх сервлетов и обеспечивает более простое, основанное на странице решение для создания большого количества динамического содержимого HTML для пользовательских веб-интерфейсов. JavaServer Pages позволяет веб-разработчикам и дизайнерам просто редактировать HTML-страницы со специальными тегами для динамических частей Java. JavaServer Pages работает, имея специальный сервлет, известный как контейнер JSP, который установлен на веб-сервере и обрабатывает все запросы просмотра страниц JSP. Контейнер JSP преобразует запрошенный JSP в код сервлета, который затем скомпилирован и немедленно выполняется. Последующие запросы на одну страницу просто вызовут сервлет выполнения для страницы. Если в JSP внесено изменение на сервер, запрос на его просмотр вызывает другой перевод, компиляцию и перезапуск сервлета выполнения.

JSF:

JavaServer Faces – стандартная платформа Java для создания пользовательских интерфейсов для веб-приложений. Самое главное, это упрощает разработку пользовательского интерфейса, который часто является одной из наиболее сложных и утомительных частей разработки веб-приложений.
Хотя возможно создание пользовательских интерфейсов с использованием основанных веб-технологий Java (таких как servlets Java и страниц JavaServer) без всесторонней структуры, предназначенной для разработки корпоративного веб-приложения, эти основные технологии часто могут приводить к проблемам, связанным с развитием и обслуживанием. Что еще более важно, к тому времени, когда разработчики достигнут решения по качеству производства, тот же набор проблем, решаемых JSF, будет решен нестандартным образом. JavaServer Faces предназначен для упрощения разработки пользовательских интерфейсов для веб-приложений Java следующими способами:
• Он обеспечивает компонентный, независимый от клиента подход к разработке для создания пользовательских интерфейсов Web, что повышает производительность и простоту использования.
• Он упрощает доступ и управление данными приложения из пользовательского интерфейса Web.
• Он автоматически управляет состоянием пользовательского интерфейса между несколькими запросами и несколькими клиентами простым и ненавязчивым образом.
• Он предоставляет инфраструктуру разработки, которая является дружественной для разнообразной аудитории разработчиков с различными наборами навыков.
• Он описывает стандартный набор архитектурных шаблонов для веб-приложения.

[ Источник: Полная ссылка: JSF ]

Есть также ситуации, когда вы можете поддержать JSP над JSF. Характер применения должен быть решающим фактором для выбора технологии.

Если у вас богатое взаимодействие с графическим интерфейсом и много требуемого Java-скрипта, то вам понравится JSF. В принципе, если ваша архитектура графического интерфейса похожа на компонент, ориентированный и даже управляемый как Swing, тогда JSF является лучшим.

Если приложение представляет собой просто форму представления, не так много взаимодействия с графическим интерфейсом, то JSP может преуспеть, если изучение новой технологии является накладными расходами, а также сложной структурой нет необходимости.

Servlet – это боковой слой сервера java.

  • JSP – это Servlet с html
  • JSF – это база компонентов на тегах libs
  • JSP – он преобразуется в сервлет один раз, когда сервер получает запрос.

что JSP преобразуется в сервлет во время выполнения, а JSF – это совершенно новая вещь, чтобы сделать веб-страницу более читаемой, поскольку JSF позволяет писать все структуры программирования в виде тега.

Основное различие между сервлетами и JSP заключается в том, что в Servlets мы пишем java-код и вставляем HTML-код, и есть просто обратный случай с JSP. В JSP мы пишем HTML-код и добавляем код Java, используя tags, предоставленные JSP.

Java Server Pages (JSP) – это Java-технология, которая позволяет веб-разработчикам и разработчикам быстро разрабатывать и легко поддерживать, богатые информацией, динамические веб-страницы, которые используют существующие бизнес-системы. Технология JSP отделяет пользовательский интерфейс от создания контента, позволяя дизайнерам изменять общий макет страницы, не изменяя базовый динамический контент.

Facelets – это первый язык декларации страницы, не предназначенный для JSP, разработанный для JSF (Java Server Faces), который предоставил разработчикам JSF более простую и более мощную модель программирования по сравнению с JSP. Он решает различные проблемы, возникающие в JSP для разработки веб-приложений.

Вот таблица, в которой сравниваются черты scriplets и facelets:

введите описание изображения здесь Источник

Jsp также имеет встроенный код сервлета, который не нуждается в какой-либо внешней компиляции, которую он может запускать напрямую. Изменения вступят в силу в jsp прямо в браузере.

Сервлет должен быть скомпилирован (т.е. он будет иметь определенное создание classа)

Jsf является компонентом представления MVC Framework

JSP означает JAVA SERVER PAGE …….. jsp не является сервлетом. Jsp использует код и HTML-тег как сам по себе, вам не нужно делать HTML и сервлет seprately.Jsp играют великолепную роль в веб-приложении. Servlet – это class Java, который играет роль, чтобы сделать вашу HTML-страницу статической и динамической.

  1. JSF – это веб-приложение, которое используется для упрощения интеграции приложений веб-интерфейсов; JSP – это технология на основе Java, используемая специально для того, чтобы помочь разработчикам программного обеспечения создавать динамические веб-страницы.

  2. JSF содержит несколько основных функций, включая, помимо прочего, Managed Beans, систему компонентов на основе шаблонов и две библиотеки тегов на основе XML; JSP должен быть скомпилирован в байт-коде Java для правильной работы.

JSP представляют собой компонент View MVC (Model View Controller). Контроллер принимает входящий запрос и передает его в Модель, которая может быть компонентом, который делает доступ к базе данных. Затем JSP форматирует вывод с использованием HTML, CSS и JavaScript, а затем вывод отправляется обратно запрашивающему.

 JSP:means HTML+Java Code: 

JSP имеет собственный жизненный цикл jsp_init () jsp_service () jsp_destroy

После первого запроса JSP конвертируется в .java-файл. Существует три типа тегов, которые мы используем.
1.) безскриптовый

 < % %> 

Здесь разработчик может объявить все те вещи, которые разработчик хочет взять на себя

2.) Тег Expression

 < %= %> 

Здесь разработчик может использовать некоторые данные, относящиеся к печати

3.) Декларация

 < !% %> 

Здесь разработчик может объявить некоторые связанные с методом данные.

 Servlet: 

Сервлеты имеют собственный жизненный цикл.

 init() service() destroy() 

После того, как контейнер первого запроса будет считывать данные из файла web.xml, после этого будет отображаться приветствие.
Теперь, после выполнения действия, он будет искать URL-адрес, и после этого процесса он будет искать конкретный сервлет там. будет выполняться операция обслуживания.

 JSF: 

У JSF есть свой собственный ui, и его жизненный цикл может выполняться шестью способами,

 A)Restore view phase B)Apply request values phase C)Process validations phase D)Update model values phase E)Invoke application phase F)Render response phase 

Для ui здесь для таблицы здесь мы используем панельную сетку, и для этого есть разные грани.

 Rich Faces Prime Faces. 

JSF – это усовершенствованная инфраструктура, в которой ее очень простая в использовании архитектура проектных моделей (MVC) для проектов. Основным преимуществом JSF над JSP является простое динамическое рендеринг компонентов в браузере на основе условий и простая интеграция событий ajax.

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

Контроллеры внутренне вызывают различные службы, которые общаются с базой данных (используя Hibernate или JPA API). Так происходит короткое течение.

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

JSF + RichFaces + Hibernate / JPA – хорошая технология, чтобы узнать наверняка!

  • Показать JDBC ResultSet в HTML на странице JSP с использованием шаблонов MVC и DAO
  • Каково значение url-шаблона в web.xml и как настроить сервлет?
  • Как определить порядок выполнения сервлет-фильтра, используя annotations в WAR
  • Получить ServletContext в ресурсе JAX-RS
  • doGet и doPost в сервлетах
  • Вывод файла изображения из сервлета
  • Как отправить массив параметров запроса на сервлет с помощью jQuery $ .ajax?
  • Максимальный размер содержимого параметра POST?
  • Как использовать servlets и Ajax?
  • Отображение Pdf в браузере с помощью Java-сервлета
  • Собирать и сохранять переданные значения нескольких динамических входов HTML обратно в сервлет
  • Interesting Posts

    Почему я не могу расширить этот раздел в нераспределенное пространство?

    Linq: GroupBy, Sum и Count

    Кнопка переключения текста в jquery

    Как автоматически скрыть текст заполнителя при фокусировке с помощью css или jquery?

    Передача массива по ссылке в C?

    Как я могу открыть более 15 файлов одновременно в Windows 7?

    Какие новые возможности добавляют пользовательские литералы к C ++?

    Код Java для преобразования байта в шестнадцатеричный

    Почему удаление файлов в корзину намного медленнее, чем при использовании Shift + Del с Total Commander?

    Word 2010: Как ссылаться на пользовательские свойства документа?

    Как сделать первый вариант , выбранный с помощью jQuery

    Как объединить два раза с препроцессором C и развернуть макрос, как в «arg ## _ ## MACRO»?

    Любой простой способ объяснить, почему я не могу сделать Список animals = new ArrayList ()?

    JavaFX – фоновый stream для SQL-запроса

    Как добавить Linux в новый менеджер загрузки Windows 8?

    Давайте будем гением компьютера.