portlets - servlet java ejemplo
¿Cuál es la diferencia entre un portlet y un servlet? (5)
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?
Esencialmente, los servlets proporcionan contenido que normalmente ocupa toda la página en un navegador (a menos que use marcos) y los portlets proporcionan contenido envuelto por una ventana. Con los portlets, puede tener múltiples portlets uno al lado del otro y cada uno puede proporcionar contenido y funcionalidad que es diferente de los demás. 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 cierta funcionalidad de mantenimiento y un único punto de entrada seguro a todos los portlets en una página. En cuanto a los detalles (similitudes / diferencias) entre ellos, continúe leyendo. A continuación se detallan algunas similitudes: Los servlets y los portlets son componentes basados en la web que utilizan Java para su implementación. Los portlets son administrados por un contenedor de portlet similar a un contenedor servlet. Ambos componentes generan contenido, que puede ser estático o dinámico.
Los portlets son parte del estándar JSR-168 que regula los contenedores y componentes del portal. Este es un estándar diferente de los estándares para contenedores web (y servlets). Aunque definitivamente existen fuertes paralelos entre estos dos estándares, difieren en contenedores, API, ciclo de vida, configuración, implementación, etc.
La principal diferencia entre el portlet y el servlet podría ser que mientras servlet siempre responde al tipo de acción individual: request , 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: render y request . Por supuesto que hay más, pero encontré esto como la diferencia central entre los dos cuando estudié el desarrollo del portal.
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 una gran cantidad de componentes utilizados en aquí. No necesitan ser necesariamente respaldados por servlets en el lado del servidor. Pero el estándar de Portlet se desarrolló junto con Java. O''Reilly tiene un buen tutorial .
Tanto los portlets como los servlets reciben una solicitud HTTP y devuelven una respuesta, que generalmente es un código HTML que puede representar un navegador. Un portlet se usa en el contexto de un "Portal", la idea es que una sola página vista por el usuario tiene muchas partes, mosaicos de pensamientos, cada uno proveniente de un portlet diferente.
Ahora puede obtener ese efecto de "mosaico" de los servidores normales (consulte Struts + Tiles para obtener un ejemplo de cómo) el bit adicional de los portlets es que los portlets se encuentran 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í, presionar un botón en uno, y algo sucede en otro.
Mejorado desde la fuente : Servlets Vs Portlets
Similitudes
Los servlets y los portlets son componentes basados en web que usan Java para su implementación.
Los portlets se administran mediante un contenedor de portlet, de la misma manera que Servlet lo administra el contenedor de servlets.
Tanto el contenido estático como el dinámico se pueden generar mediante Portlets y Servlets.
El ciclo de vida de los portlets y servlets está controlado por el contenedor
El modelo de cliente / servidor se usa para servlets y portlets
El empaque y la implementación son esencialmente los mismos, WAR / EAR.
La sesión de aplicación existe en ambos contenedores, Servlet y Portlet. Es una de las formas de compartir datos (comunicación cruzada entre portlets) desde la fase de renderización hasta la fase de acción (o cualquier fase inferior) en los contenedores de portlet.
- Tanto los Servlets como los Portlets utilizan entornos de servidores / VM similares que lo admiten. Aunque, algunas configuraciones adicionales podrían necesitarse en caso de portlets para hacer que funcione
- Las herramientas build / DI son similares para ambos: Ant, Maven, Gradle, etc. son compatibles. Principalmente :) - Esto ha cambiado un poco con Liferay 7.
Disimilitudes
Los servlets pueden representar páginas web completas, mientras que los portlets procesan 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 es compatible con 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 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 viz. hacer 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 alcance de portlet para la comunicación intra portlet.
Portlet no puede establecer la codificación del juego de caracteres de la respuesta ni puede establecer los encabezados de respuesta HTTP.
Portlets no tiene acceso a la URL de solicitud. Por lo tanto, no puede acceder a los parámetros de consulta anexados a la URL. Los portlets no pueden establecer cookies.
Los métodos típicos de la API de Portlet son
doView()
,doEdit()
,doHelp()
yprocessAction()
mientras que los de servlet sonservice()
,doPost()
,doGet()
.La implementación de los portlets implica un enfoque diferente al de una aplicación de servlets. 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 los servlets sin modularización de la aplicación utilizando bibliotecas especiales como OSGi.
Editar (De los comentarios)
Un contenedor de portlets está construido en un contenedor de servlets. Por lo tanto, en última instancia, se puede decir que el portlet se ejecuta en un contenedor de servlets. Pero al desarrollar aplicaciones, vemos un contenedor de portlets por separado del contenedor Servlet / Java EE.