В чем разница между портлетом и сервлетом?

Меня просят работать с портлетами и порталами.

Я хочу знать разницу между портлетом и сервлетом?

Как/где портлет отличается (может быть функционально) от сервлета?

Ответ 1

Портлеты являются частью стандарта JSR-168, который регулирует портальные контейнеры и компоненты. Это стандартный стандарт стандартов для веб-контейнеров (и сервлетов). Хотя между этими двумя стандартами существуют четкие параллели, они различаются в контейнерах, API, жизненном цикле, конфигурации, развертывании и т.д.

Основное различие между портлетом и сервлетом может заключаться в том, что, хотя сервлет всегда отвечает на один тип действия - запрос, портлет (из-за характера его жизненного цикла и более сильных привязок контейнера) должен реагировать на два типа действий: render и запрос. Есть, конечно, больше, но я нашел это как основное различие между этими двумя, когда я изучал развитие портала.

Ответ 2

Улучшено от источника: Сервлеты и портлеты

Сходства

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

  • Портлеты управляются контейнером портлетов, так же как и сервлет управляемый контейнером сервлетов.

  • Как статический, так и динамический контент могут генерироваться портлетами и Сервлетов.

  • Жизненный цикл портлетов и сервлетов управляется контейнером

  • Модель клиент/сервер используется как для сервлетов, так и для портлетов

  • Упаковка и развертывание по существу одинаковы, WAR/EAR.

  • Сессия приложений существует как в контейнерах сервлетов, так и в портлетах. Это один из способов обмена данными (грубая Inter-Portlet Communication) с этапа визуализации на фазу действия (или любые более низкие фазы) в контейнерах портлетов.

  • Оба сервлета и портлеты используют аналогичные серверные/виртуальные среды, которые его поддерживают. Несмотря на это, некоторые дополнительные конфигурации могут потребоваться в случае, если портлеты сделают отметку
  • Инструменты сборки /DI аналогичны для обоих - Ant, Maven, Gradle и т.д. все поддерживаются. В основном:) - Это немного изменилось с Liferay 7.

Несоответствия

  • Сервлеты могут отображать полные веб-страницы, тогда как портлеты отображают html фрагменты. Эти фрагменты агрегируются порталом в полная веб-страница.

  • Тип содержимого портлетов JSR 168 может быть только cHTML, XHTML, WML. Это не поддерживает другие типы контента.

  • Портлеты не могут генерировать HTML-код, содержащий теги, такие как как тело, фрейм, набор фреймов, head, html или заголовок.

  • Портлет, в отличие от сервлета, не привязан к нему, поэтому он не могут быть доступны напрямую. Доступ осуществляется только через страницу портала который содержит портлет.

  • Портлеты могут быть снабжены элементами управления для управления состояниями окна или портлетов.

  • Несколько экземпляров одного портлета можно разместить на одном и том же стр.

  • Портлеты поддерживают постоянную конфигурацию и настройку, профиль информация.

  • Портлеты могут иметь два типа запросов: запрос и действие запрос.

  • Портлеты имеют две области видимости в сеансе; область применения для связь через портлеты и область портлета для внутреннего портлета коммуникации.

  • Портлет не может установить кодировку набора символов ответа и не может он устанавливает заголовки ответов HTTP.

  • Портлеты не имеют доступа к URL-адресу запроса. Поэтому он не может получить доступ к параметры запроса, добавленные к URL-адресу. Портлеты не могут устанавливать файлы cookie.

  • Типичными методами API портлета являются doView(), doEdit(), doHelp() и processAction(), в то время как сервлет - service(), doPost(), doGet().

  • Развертывание портлетов включает другой подход, чем приложение Servlet. Некоторые поставщики (Liferay/Alfresco/WebSphere) поддерживают горячее развертывание портлетов без необходимости перезапуска сервера, что невозможно в случае сервлетов без модуляции приложения с использованием специальных библиотек, таких как OSGi.


Изменить (Из комментариев)

Контейнер портлетов построен на контейнере Servlet. Поэтому в конечном итоге можно сказать, что портлет работает в контейнере сервлетов. Но при разработке приложений мы рассматриваем контейнер портлета отдельно от контейнера Servlet/Java EE.

Ответ 3

Оба портлета и сервлеты получают HTTP-запрос и возвращают ответ, который обычно является HTML, который может быть отображен браузером. Портлет используется в контексте "Портала", идея состоит в том, что на одной странице, которую видит пользователь, есть много частей, думаю, что каждая из них будет выглядеть из разных портлетов.

Теперь вы можете получить этот "черепичный" эффект от обычных сервлетов (см. Struts + Tiles для примера того, как) дополнительный бит из портлетов заключается в том, что портлеты находятся в более богатой среде, предоставляемой Portal, дополнительные API-интерфейсы при условии, что то, что отображается любым портлетом, может быть настроено отдельными пользователями для их предпочтений, а порты могут общаться друг с другом - нажмите кнопку в одном, что-то происходит в другом.

Ответ 4

Сервлеты имеют определение java (приложения, которые обрабатывают запросы HTTP GET/POST), в то время как портлеты имеют определение пользовательского интерфейса. Компонент, выполняющий определенную функцию, подобную виджетам vista vista или множеству компонентов, используемых здесь в stackoverflow. Они не обязательно должны поддерживаться сервлетами на стороне сервера. Но стандарт Portlet был разработан вместе с java. O'Reilly имеет приятный учебник.

Ответ 5

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