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

96

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?

Rajesh
la source

Réponses:

65

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.

excellent chef
la source
1
Mise à jour: les portlets 1 sont JSR 168 , les portlets 2 sont JSR 286 et le portlet 3 est JSR 362 .
Basil Bourque le
137

Amélioré de la source : Servlets Vs Portlets

Similitudes

  1. Les servlets et les portlets sont des composants Web qui utilisent 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 un conteneur de servlet.

  3. Le contenu statique et dynamique peut être généré par des portlets et des 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é 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 portlet.

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

  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.


Différences

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

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

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

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

  5. Les portlets peuvent être fournis avec des commandes pour manipuler ses états de fenêtre ou ses modes de portlet.

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

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

  8. Les portlets peuvent avoir deux types de demande à savoir. demande de rendu et demande d'action.

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

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

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

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

  13. 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)

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

Ashok Goli
la source
Ainsi, une application de portail s'exécute dans un conteneur de servlet / JEE et communique séparément avec un conteneur de portlet? La machine du client (navigateur) n'est pas consciente du conteneur de portlet ou des portlets tel que je le comprends, à part l'apparence sur la page qui est gérée via JavaScript et les actualisations partielles de la page.
Andy
2
Un conteneur de portlet est construit sur un conteneur de servlet. Vous pouvez dire qu'un conteneur de portlet est un conteneur de servlet avancé avec de nombreuses «fonctionnalités». Mais pour répondre franchement à votre question, oui. Lors du développement d'applications, nous visualisons un conteneur de portlet séparément du conteneur Servlet / JEE.
Ashok Goli
4
La façon la plus simple de penser à cela est qu'un servlet rend une page Web entière et un portlet rend une partie rectangulaire spécifique (sous-section) d'une page Web. Par exemple, la barre de publicité sur le côté droit d'une page d'actualités peut être rendue sous forme de portlet. Mais vous n'implémentez pas un seul champ d'édition en tant que portlet, car c'est trop granulaire. Fondamentalement, si vous décomposez une page Web en ses principales sections, ce sont de bons candidats pour en faire des portlets.
@ClayFerguson "un portlet rend une partie rectangulaire spécifique (sous-section) d'une page Web", donc c'est comme un cadre, ou un <div> ...
Tom Brito
@TomBrito - En partie vrai. C'est comme un frame ou un div, qui ont leur propre cycle de vie et peuvent partager des données avec d'autres frames ou divs.
Ashok Goli
8

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.

djna
la source
6

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 .

whatnick
la source
4

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:

Liyakath
la source