Respuestas:
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.
Mejorado de la fuente : Servlets Vs Portlets
Similitudes
Los servlets y portlets son componentes basados en web que utilizan Java para su implementación.
Los portlets son gestionados por un contenedor de portlets al igual que el servlet es gestionado por un contenedor de servlets.
Portlets y Servlets pueden generar contenido estático y dinámico.
El ciclo de vida de los portlets y servlets está controlado por el contenedor.
El modelo cliente / servidor se utiliza tanto para servlets como para portlets
El empaquetado y la implementación son esencialmente los mismos, WAR / EAR.
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.
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
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
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.
El tipo de contenido de los portlets JSR 168 solo puede ser cHTML, XHTML, WML. No admite otros tipos de contenido.
Los portlets no pueden generar código HTML que contenga etiquetas como cuerpo, marco, conjunto de marcos, encabezado, html o título.
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.
Los portlets se pueden proporcionar con controles para manipular sus estados de ventana o modos de portlet.
Se pueden colocar varias instancias de un solo portlet en la misma página.
Los portlets admiten configuración y personalización persistentes, información de perfil.
Los portlets pueden tener dos tipos de solicitudes, a saber. renderizar solicitud y solicitud de acción.
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.
Portlet no puede establecer la codificación del juego de caracteres de la respuesta ni puede establecer los encabezados de respuesta HTTP.
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.
Los métodos típicos de API de portlets son
doView()
,doEdit()
,doHelp()
yprocessAction()
mientras que los de servlet sonservice()
,doPost()
,doGet()
.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)
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.
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.
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 .
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: