On me demande de travailler sur des portlets et des portails.
Je veux connaître la différence entre un portlet et un servlet?
En quoi / où un portlet diffère-t-il (peut-être fonctionnellement) d'un servlet?
Réponses:
Les portlets font partie de la norme JSR-168 qui réglemente les conteneurs et les composants du portail. Il s'agit d'une norme différente des normes pour les conteneurs Web (et les servlets). Bien qu'il existe certainement des parallèles forts entre ces deux normes, ils diffèrent par les conteneurs, les API, le cycle de vie, la configuration, le déploiement, etc.
La principale différence entre le portlet et le servlet pourrait être que si le servlet répond toujours à un seul type d'action - demande , le portlet (en raison de la nature de son cycle de vie et des liaisons de conteneur plus fortes) doit répondre à deux types d'actions: le rendu et la demande . Il y en a bien sûr plus, mais j'ai trouvé cela comme la différence fondamentale entre les deux lorsque j'ai étudié le développement de portail.
Amélioré de la source : Servlets Vs Portlets
Similitudes
Les servlets et les portlets sont des composants Web qui utilisent Java pour leur implémentation.
Les portlets sont gérés par un conteneur de portlet, tout comme le servlet est géré par un conteneur de servlet.
Le contenu statique et dynamique peut être généré par des portlets et des servlets.
Le cycle de vie des portlets et des servlets est contrôlé par le conteneur
Le modèle client / serveur est utilisé pour les servlets et les portlets
L'emballage et le déploiement sont essentiellement les mêmes, WAR / EAR.
La session d'application existe dans les conteneurs Servlet et Portlet. C'est l'un des moyens de partager des données (communication inter-portlet brute) de la phase de rendu à la phase d'action (ou à toute phase inférieure) dans les conteneurs de portlet.
Les servlets et les portlets utilisent des environnements serveur / VM similaires qui les prennent en charge. Cependant, certaines configurations supplémentaires peuvent être nécessaires en cas de portlets pour le faire cocher
Les outils de construction / DI sont similaires pour les deux - Ant, Maven, Gradle, etc. sont tous pris en charge. Surtout :) - Cela a un peu changé avec Liferay 7.
Différences
Les servlets peuvent rendre des pages Web complètes, tandis que les portlets rendent des fragments html. Ces fragments sont regroupés par le portail dans une page Web complète.
Le type de contenu des portlets JSR 168 ne peut être que cHTML, XHTML, WML. Il ne prend pas en charge les autres types de contenu.
Les portlets ne sont pas autorisés à générer du code HTML contenant des balises telles que corps, cadre, jeu de cadres, tête, html ou titre.
Un Portlet, contrairement à un servlet, n'a pas d'URL qui lui est attachée, il n'est donc pas accessible directement. L'accès se fait uniquement via la page du portail qui contient le portlet.
Les portlets peuvent être fournis avec des commandes pour manipuler ses états de fenêtre ou ses modes de portlet.
Plusieurs instances d'un seul portlet peuvent être placées sur la même page.
Les portlets prennent en charge la configuration et la personnalisation persistantes, les informations de profil.
Les portlets peuvent avoir deux types de demande à savoir. demande de rendu et demande d'action.
Les portlets ont deux étendues dans la session; étendue d'application pour la communication entre les portlets et étendue de portlet pour la communication intra-portlet.
Le portlet ne peut pas définir le codage du jeu de caractères de la réponse ni définir les en-têtes de réponse HTTP.
Les portlets n'ont pas accès pour demander l'URL. Il ne peut donc pas accéder aux paramètres de requête ajoutés à l'URL. Les portlets ne peuvent pas définir de cookies.
Les méthodes typiques de l' API Portlet sont
doView()
,doEdit()
,doHelp()
etprocessAction()
alors que ceux de servlet sontservice()
,doPost()
,doGet()
.Spécifications du servlet - JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 et 2.4). Spécifications du portlet - JSR 168 (spécification de portlet v1.0), JSR 286 (spécification de portlet v2.0), JSR 362 (spécification de portlet v3.0)
Le déploiement de portlets implique une approche différente de celle d'une application Servlet. Certains fournisseurs (Liferay / Alfresco / WebSphere) prennent en charge le déploiement à chaud des portlets sans avoir besoin de redémarrer le serveur, ce qui n'est pas possible dans le cas de servlets sans modularisation de l'application à l'aide de bibliothèques spéciales telles que OSGi.
Modifier (à partir des commentaires)
Un conteneur de portlet est construit sur un conteneur de servlet. Donc, finalement, on peut dire que le portlet s'exécute sur un conteneur de servlet. Mais lors du développement d'applications, nous visualisons un conteneur de portlet séparément du conteneur Servlet / Java EE.
Les portlets et les servlets reçoivent une requête http et renvoient une réponse, qui est généralement du HTML qui peut être rendu par un navigateur. Un portlet est utilisé dans le cadre d'un «portail», l'idée étant qu'une seule page vue par l'utilisateur comporte de nombreuses parties, pensez tuiles, chacune provenant d'un portlet différent.
Maintenant, vous pouvez obtenir cet effet "en mosaïque" à partir de servets normaux (voir Struts + Tiles pour un exemple de la façon dont) le petit plus des portlets est que les portlets sont dans un environnement plus riche fourni par le portail, des API supplémentaires sont fournies afin que ce qui est affiché par n'importe quel portlet peut être configuré par des utilisateurs individuels selon leurs préférences, et les porlets peuvent communiquer entre eux - appuyez sur un bouton dans l'un, quelque chose se passe dans un autre.
Les servlets ont une définition java (applications qui gèrent les requêtes HTTP GET / POST), tandis que les portlets ont une définition d'interface utilisateur: un composant exécutant une fonction spécifique similaire aux widgets Windows Vista ou à un grand nombre de composants utilisés dans stackoverflow ici. Ils ne doivent pas nécessairement être soutenus par des servlets côté serveur. Mais le standard Portlet a été développé avec java. O'Reilly a un joli tutoriel .
Essentiellement, les servlets fournissent du contenu qui occupe normalement toute la page dans un navigateur (sauf si vous utilisez des cadres), et les portlets fournissent un contenu qui est enveloppé par une fenêtre. Avec les portlets, vous pouvez avoir plusieurs portlets côte à côte et chacun peut fournir un contenu et des fonctionnalités différents les uns des autres. Un portlet peut fournir l'interaction complète pour un type d'application, tandis qu'un autre portlet peut fournir du contenu pour un autre type d'application. Le portail peut fournir des fonctionnalités de gestion interne et un point d'entrée unique sécurisé pour tous les portlets d'une page. En ce qui concerne les détails (similitudes / différences) entre eux, veuillez continuer à lire. Voici quelques similitudes: