¿Cuál es la diferencia entre un portlet y un servlet?

96

Me piden que trabaje en portlets y portales.

Quiero saber la diferencia entre un portlet y un servlet.

¿Cómo / dónde se diferencia un portlet (puede ser funcionalmente) de un servlet?

Rajesh
fuente

Respuestas:

65

Los portlets son parte del estándar JSR-168 que regula los componentes y contenedores del portal. Este es un estándar diferente de los estándares para contenedores web (y servlets). Aunque definitivamente hay fuertes paralelismos entre estos dos estándares, difieren en contenedores, API, ciclo de vida, configuración, implementación, etc.

La principal diferencia entre portlet y servlet podría ser que, si bien el servlet siempre responde a un solo tipo de acción: solicitud , el portlet (debido a la naturaleza de su ciclo de vida y enlaces de contenedor más fuertes) tiene que responder a dos tipos de acciones: procesamiento y solicitud . Por supuesto, hay más, pero encontré esto como la diferencia principal entre los dos cuando estudié el desarrollo de portales.

el mejor chef
fuente
1
Actualización: Portlets 1 es JSR 168 , Portlets 2 es JSR 286 y Portlet 3 es JSR 362 .
Basil Bourque
137

Mejorado de la fuente : Servlets Vs Portlets

Similitudes

  1. Los servlets y portlets son componentes basados ​​en web que utilizan Java para su implementación.

  2. Los portlets son gestionados por un contenedor de portlets al igual que el servlet es gestionado por un contenedor de servlets.

  3. Portlets y Servlets pueden generar contenido estático y dinámico.

  4. El ciclo de vida de los portlets y servlets está controlado por el contenedor.

  5. El modelo cliente / servidor se utiliza tanto para servlets como para portlets

  6. El empaquetado y la implementación son esencialmente los mismos, WAR / EAR.

  7. La sesión de aplicación existe en contenedores de servlet y portlet. Es una de las formas de compartir datos (comunicación cruda entre portlets) desde la fase de renderización hasta la fase de acción (o cualquier fase inferior) en los contenedores de portlets.

  8. Tanto los servlets como los portlets utilizan entornos de servidor / máquina virtual similares que lo admiten. Aunque, es posible que se necesiten algunas configuraciones adicionales en el caso de los portlets para que funcione

  9. Las herramientas de compilación / DI son similares para ambos: Ant, Maven, Gradle, etc. son compatibles. Mayormente :) - Esto ha cambiado un poco con Liferay 7.


Disimilitudes

  1. Los servlets pueden representar páginas web completas, mientras que los portlets representan fragmentos html. Estos fragmentos son agregados por el portal en una página web completa.

  2. El tipo de contenido de los portlets JSR 168 solo puede ser cHTML, XHTML, WML. No admite otros tipos de contenido.

  3. Los portlets no pueden generar código HTML que contenga etiquetas como cuerpo, marco, conjunto de marcos, encabezado, html o título.

  4. Un portlet, a diferencia de un servlet, no tiene una URL adjunta, por lo que no se puede acceder a él directamente. El acceso es solo a través de la página del portal que contiene el portlet.

  5. Los portlets se pueden proporcionar con controles para manipular sus estados de ventana o modos de portlet.

  6. Se pueden colocar varias instancias de un solo portlet en la misma página.

  7. Los portlets admiten configuración y personalización persistentes, información de perfil.

  8. Los portlets pueden tener dos tipos de solicitudes, a saber. renderizar solicitud y solicitud de acción.

  9. Los portlets tienen dos ámbitos dentro de la sesión; ámbito de aplicación para la comunicación entre portlets y ámbito de portlet para la comunicación dentro del portlet.

  10. Portlet no puede establecer la codificación del juego de caracteres de la respuesta ni puede establecer los encabezados de respuesta HTTP.

  11. Los portlets no tienen acceso a la URL de solicitud. Por lo tanto, no puede acceder a los parámetros de consulta adjuntos a la URL. Los portlets no pueden establecer cookies.

  12. Los métodos típicos de API de portlets son doView(), doEdit(), doHelp()y processAction()mientras que los de servlet son service(), doPost(), doGet().

  13. Especificaciones de servlet : JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 y 2.4). Especificaciones del portlet : JSR 168 (Portlet Spec v1.0), JSR 286 (Portlet Spec v2.0), JSR 362 (Portlet Spec v3.0)

  14. La implementación de portlets implica un enfoque diferente al de una aplicación de servlet. Algunos proveedores (Liferay / Alfresco / WebSphere) admiten la implementación en caliente de portlets sin la necesidad de reiniciar el servidor, lo que no es posible en el caso de servlets sin modularizar la aplicación utilizando bibliotecas especiales como OSGi.


Editar (de comentarios)

Un contenedor Portlet se construye en un contenedor Servlet. Entonces, en última instancia, se puede decir que el portlet se ejecuta en un contenedor de servlet. Pero mientras desarrollamos aplicaciones, vemos un contenedor de portlet por separado del contenedor Servlet / Java EE.

Ashok Goli
fuente
Entonces, ¿una aplicación de portal se ejecuta en un contenedor de servlet / JEE y se comunica con un contenedor de portlet por separado? La máquina del cliente (navegador) no conoce el contenedor del portlet o los portlets como yo lo entiendo, además de la apariencia en la página que se maneja a través de JavaScript y actualizaciones de página parciales.
Andy
2
Un contenedor Portlet se construye en un contenedor Servlet. Puede decir que un contenedor de Portlet es un contenedor de Servlet avanzado con muchas 'características'. Pero para responder a su pregunta sin rodeos, sí. Mientras desarrollamos aplicaciones, vemos un contenedor de portlet por separado del contenedor de Servlet / JEE.
Ashok Goli
4
La forma más sencilla de pensar en esto es que un servlet representa una página web completa y un portlet representa una parte rectangular específica (subsección) de una página web. Por ejemplo, la barra de publicidad en el lado derecho de una página de noticias podría representarse como un portlet. Pero no implementaría un solo campo de edición como un portlet, porque eso es demasiado granular. Básicamente, si divide una página web en sus principales áreas seccionales, esas son buenas candidatas para convertirlas en portlets.
@ClayFerguson "un portlet representa una parte rectangular específica (subsección) de una página web", por lo que es como un marco, o un <div> ...
Tom Brito
@TomBrito - En parte cierto. Es como un marco o un div, que tienen sus propios ciclos de vida y pueden compartir datos con otros marcos o divs.
Ashok Goli
8

Tanto los portlets como los servlets reciben una solicitud http y devuelven una respuesta, que suele ser un código HTML que un navegador puede representar. Un portlet se utiliza en el contexto de un "Portal", la idea es que una sola página vista por el usuario tiene muchas partes, piense en mosaicos, cada una procedente de un portlet diferente.

Ahora, puede obtener ese efecto de "mosaico" de los servets normales (consulte Struts + Tiles para ver un ejemplo de cómo). El bit extra de los portlets es que los portlets están en un entorno más rico proporcionado por el Portal, se proporcionan API adicionales para que lo que se muestra en cualquier portlet puede ser configurado por usuarios individuales según sus preferencias, y los porlets pueden comunicarse entre sí: presione un botón en uno, algo sucede en otro.

djna
fuente
6

Los servlets tienen una definición java (aplicaciones que manejan solicitudes HTTP GET / POST), mientras que los portlets tienen una definición de interfaz de usuario: un componente que realiza una función específica similar a los widgets de Windows Vista o muchos componentes utilizados aquí en stackoverflow. No es necesario que estén respaldados por servlets en el lado del servidor. Pero el estándar Portlet se desarrolló junto con java. O'Reilly tiene un buen tutorial .

¿Qué?
fuente
4

Esencialmente, los servlets proporcionan contenido que normalmente ocupa toda la página en un navegador (a menos que esté usando marcos) y los portlets proporcionan contenido que está envuelto por una ventana. Con los portlets, puede tener varios portlets uno al lado del otro y cada uno puede proporcionar contenido y funcionalidad diferente del otro. Un portlet puede proporcionar la interacción completa para un tipo de aplicación, mientras que otro portlet puede proporcionar contenido para otro tipo de aplicación. El portal puede proporcionar algunas funciones de mantenimiento y un único punto de entrada seguro a todos los portlets de una página. En cuanto a los detalles (similitudes / diferencias) entre ellos, continúe leyendo. A continuación se muestran algunas similitudes:

Liyakath
fuente