web-dev-qa-db-fra.com

Quelle est la différence entre un portlet et un servlet?

On me demande de travailler sur des portlets et des portails.

Je veux savoir la différence entre un portlet et un servlet?

Comment/où un portlet diffère-t-il (peut-être fonctionnellement) d'un servlet?

95
Rajesh

Les portlets font partie de la norme JSR-168 qui régit les conteneurs et les composants de portail. Cette norme diffère des normes pour les conteneurs Web (et les servlets). Il existe certes des parallèles marqués entre ces deux normes, mais 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 peut être que, bien que le servlet réponde toujours à un seul type d'action - demande, le portlet (en raison de la nature de son cycle de vie et de ses liaisons de conteneur plus robustes) doit répondre à deux types d'actions: rend et demande. Il y a bien sûr plus que cela, mais j'ai trouvé cela comme la différence fondamentale entre les deux lorsque j'ai étudié le développement de portail.

64
topchef

Amélioré à partir de la source: Servlets Vs Portlets

Similitudes

  1. Les servlets et les portlets sont des composants Web utilisant Java pour leur implémentation.

  2. Les portlets sont gérés par un conteneur de portlet, tout comme le servlet est géré par le conteneur de servlet.

  3. Le contenu statique et dynamique peut être généré par les portlets et les servlets.

  4. Le cycle de vie des portlets et des servlets est contrôlé par le conteneur.

  5. Le modèle client/serveur est utilisé à la fois pour les servlets et les portlets

  6. L'emballage et le déploiement sont essentiellement les mêmes, WAR/EAR.

  7. 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 portlets.

  8. Les servlets et les portlets utilisent des environnements de serveur similaires/VM qui le prennent en charge. Cependant, certaines configurations supplémentaires peuvent être nécessaires dans le cas de portlets pour le faire cocher
  9. 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.

Dissimilarités

  1. Les servlets peuvent afficher des pages Web complètes, tandis que les portlets génèrent des fragments HTML. Ces fragments sont regroupés par le portail dans une page Web complète.

  2. Le type de contenu des portlets JSR 168 ne peut être que cHTML, XHTML, WML. Il ne supporte pas les autres types de contenu.

  3. Les portlets ne sont pas autorisés à générer du code HTML contenant des balises telles que body, frame, frameset, head, html ou title.

  4. Contrairement à un servlet, l'URL n'est pas associée à un portlet, il est donc impossible d'y accéder directement. L'accès s'effectue uniquement via la page de portail contenant le portlet.

  5. Les portlets peuvent être dotés de commandes permettant de manipuler les états de la fenêtre ou les modes de portlet.

  6. Plusieurs instances d'un même portlet peuvent être placées sur la même page.

  7. Les portlets prennent en charge la configuration et la personnalisation persistantes, ainsi que les informations de profil.

  8. Les portlets peuvent avoir deux types de demandes, à savoir. rendre la requête et la requête d'action.

  9. Les portlets ont deux portées dans la session; champ d'application pour la communication entre les portlets et champ d'application pour la communication intra-portlet.

  10. Le portlet ne peut pas définir l'encodage du jeu de caractères de la réponse ni les en-têtes de réponse HTTP.

  11. Les portlets n'ont pas accès à l'URL de requête. 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.

  12. Les méthodes typiques de l'API de portlet sont doView(), doEdit(), doHelp() et processAction() alors que celles de servlet sont service(), doPost(), doGet().

  13. Le déploiement de portlets implique approche différente qu'une application Servlet. Certains fournisseurs (Liferay/Alfresco/WebSphere) prennent en charge le déploiement à chaud des portlets sans qu'il soit nécessaire de redémarrer le serveur, ce qui n'est pas possible dans le cas de servlets sans modulariser l'application à l'aide de bibliothèques spéciales telles que OSGi.


Modifier  (À partir de 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 voyons un conteneur de portlet séparément du conteneur Servlet/Java EE.

131
Ashok Felix

Les portlets et les servlets reçoivent une requête http et renvoient une réponse, qui correspond généralement à du code HTML pouvant être restitué par un navigateur. Un portlet est utilisé dans le contexte d'un "portail", l'idée étant qu'une seule page vue par l'utilisateur comporte de nombreuses pièces, pensez à des tuiles, chacune provenant d'un portlet différent.

Maintenant, vous pouvez obtenir cet effet "mosaïque" à partir de servets normaux (voir Struts + Mosaïques pour un exemple sur la façon dont) le bit supplémentaire des portlets est que les portlets se trouvent dans un environnement plus riche fourni par le portail, des API supplémentaires sont fournies de sorte que ce qui est affiché par n'importe quel portlet peut être configuré par les utilisateurs individuels selon leurs préférences, et les porlets peuvent communiquer les uns avec les autres - appuyez sur un bouton sur l'un, quelque chose se passe sur un autre.

8
djna

Les servlets ont une définition Java (applications qui gèrent les demandes HTTP GET/POST)), tandis que les portlets ont une définition d'interface utilisateur. Un composant remplissant une fonction spécifique similaire aux widgets Windows Vista ou à de nombreux composants utilisés dans stackoverflow ici. Ils ne doivent pas nécessairement être pris en charge par des servlets côté serveur, mais le standard de portlet a été développé parallèlement à Java. O'Reilly a un Nice tutorial .

6
whatnick

Les servlets fournissent essentiellement un contenu qui occupe normalement la page entière d'un navigateur (sauf si vous utilisez des cadres), tandis que les portlets fournissent un contenu encapsulé dans une fenêtre. Avec les portlets, vous pouvez avoir plusieurs portlets côte à côte et chacun d'entre eux peut fournir un contenu et des fonctionnalités différentes. 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 une fonctionnalité de gestion interne et un point d’entrée unique sécurisé à tous les portlets d’une page. En ce qui concerne les détails (similitudes/différences) entre eux, veuillez continuer à lire. Voici quelques 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 similaire à un conteneur de servlet. Ces deux composants génèrent du contenu, qui peut être statique. ou dynamique

4
Liyakath