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

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

17 ответов

Решение

JSP (JavaServer Pages)

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

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

сервлеты

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

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

JSF (JavaServer Faces)

JSF - это основанная на компонентах инфраструктура MVC, которая построена на основе Servlet API и предоставляет компоненты через библиотеки тегов, которые можно использовать в JSP или любой другой технологии представления на основе Java, такой как Facelets. Facelets гораздо больше подходит для JSF, чем JSP. Именно он предоставляет большие возможности шаблонизации, такие как составные компоненты, в то время как JSP в основном предлагает только <jsp:include> для шаблонов, чтобы вы были вынуждены создавать пользовательские компоненты с необработанным Java-кодом (который немного непрозрачен и требует много работы в JSF), когда вы хотите заменить повторяющуюся группу компонентов одним компонентом. Начиная с JSF 2.0, JSP устарела как технология просмотра в пользу Facelets.

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

Смежные вопросы

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

Технология JSP является частью семейства технологий Java. Страницы JSP скомпилированы в сервлеты и могут вызывать компоненты JavaBeans (компоненты) или компоненты Enterprise JavaBeans (объекты EJB) для выполнения обработки на сервере. Таким образом, технология 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) и следует жизненному циклу компонента, определенному спецификацией.

Сервлеты:

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

JSP:

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

JSF:

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

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

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

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

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

Сервлет - это Java-серверный слой.

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

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

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

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

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

Вот таблица, которая сравнивает особенности скриптов и лицевых граней:

Источник

JSP:means HTML+Java Code:

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

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

<%  %>

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

2.) Выражение тега

<%=  %>

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

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

<!% %>

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

Servlet:

У сервлета свой жизненный цикл.

init()
service()
destroy()

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

JSF:

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

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

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

Rich Faces
Prime Faces.

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

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

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

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

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

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

JSP означает JavaServer Pages, а JSF — JavaServer Faces. JSP — это технология, которая помогает разработчикам разрабатывать динамические веб-страницы с использованием таких технологий, как HTML, XML и других подобных языков. JSF — это платформа, которая помогает разработчикам разрабатывать пользовательские интерфейсы для серверных приложений. Обе эти технологии основаны на Java и в основном используются для веб-приложений. JSP больше похож на ASP или PHP, за исключением того факта, что он основан на Java, что означает, что он использует язык программирования Java. Обе технологии разработаны Sun Microsystems. Интересно отметить, что версии JSP 1.x использовали JSP в качестве системы по умолчанию для шаблонов, но JSP 2.x использует Facelets вместо JSP.

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

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

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

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

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

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

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

Java Server Pages используется для создания динамических веб-страниц. Jsp были введены для написания кода Java плюс HTML в одном файле, что было непросто сделать в программе сервлетов. И файл jsp преобразуется в сервлет Java, когда он переведен.

Java Server Faces - это веб-инфраструктура MVC, которая упрощает разработку пользовательского интерфейса.

Другие вопросы по тегам