В чем разница между JSF, Servlet и JSP? - PullRequest
788 голосов
/ 19 января 2010

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

Ответы [ 15 ]

1179 голосов
/ 20 января 2010

JSP (JavaServer Pages)

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

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

сервлеты

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

Примечание : сама JSP НЕ устарела, устарела только комбинация JSF с JSP.

Примечание : JSP обладает большими возможностями шаблонизации с помощью Taglibs, особенно вариант ( Tag File ). Шаблон JSP в сочетании с JSF - вот чего не хватает.

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

Похожие вопросы

78 голосов
/ 19 января 2010

См. 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 для: представления компонентов пользовательского интерфейса и управления их состоянием, обработки событий и проверки ввода, определения навигации по страницам и поддержки интернационализации и доступности.

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

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

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

31 голосов
/ 06 апреля 2012

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

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

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

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

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

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

22 голосов
/ 31 июля 2013

Сервлеты:

API сервлетов Java позволяет разработчикам Java писать код на стороне сервера для доставки динамического веб-контента. Как и другой проприетарный веб-сервер API, Java Servlet API предложил улучшенную производительность по сравнению с 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 ]

15 голосов
/ 20 июня 2013

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

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

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

12 голосов
/ 15 мая 2011

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

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

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

5 голосов
/ 24 декабря 2015

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

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

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

enter image description here Источник

5 голосов
/ 30 ноября 2014

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

0 голосов
/ 10 января 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...