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

761

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

  • 1
    В JSF 2.0+ xml не требуется.
Теги:
jsp
servlets
jsf
java-ee

16 ответов

1140
Лучший ответ

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

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

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

Servlets

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

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

JSF (JavaServer Faces)

JSF представляет собой структуру MVC на основе на основе компонентов, которая построена поверх API Servlet и предоставляет компоненты через taglibs который может использоваться в 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 для выполнения всей работы.

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

  • 0
    @BalusC: я видел, что этот тип кода используется в jsp вместо java-кода - <c: forEach items = "$ {items}"> <jsp: attribute name = "var"> <mytag: doSomething /> </ jsp : attribute> Что это?
  • 9
    Это JSTL .
Показать ещё 11 комментариев
77

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

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

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

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

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

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

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

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

  • 6
    «JSP - это специализированный вид сервлетов. JSF - это набор тегов, которые вы можете использовать с JSP». Это утверждение лучше всего описывает отношения между тремя!
30

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

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

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

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

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

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

20

Сервлеты:

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

JSP:

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

JSF:

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

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

  • 3
    Это был не я, но я думаю, это потому, что вы просто скопировали и вставили ответ из книги.
  • 7
    @ Оберон: Спасибо за ответ. Мне потребовалось некоторое время, чтобы найти точные слова, поэтому пошли за книгой. Если это неуместно, то вы или кто-либо другой можете предложить мне снять ответ. Я буду рад сделать это.
15

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

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

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

12

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

  • JSP - это сервлет с html
  • JSF - это база компонентов в тегах libs
  • JSP - он был преобразован в сервлет один раз, когда сервер получил запрос.
  • 2
    JSP преобразуется в сервлет один раз, когда сервер получил запрос.
  • 0
    ... когда сервер получил первый запрос. Кэширование разума.
Показать ещё 1 комментарий
10

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

5

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

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

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

Изображение 1388 Источник

5

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

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

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

0

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

  • 1
    JSP действительно преобразуются в компоненты сервлета. Msgstr "JSP переводятся в сервлеты во время выполнения". Источник: en.wikipedia.org/wiki/JavaServer_Pages
0

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

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

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

-1

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

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

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

-1

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

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

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

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

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

-2
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 имеет свой собственный 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

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

Rich Faces
Prime Faces.
-2

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню