856 votes

Quelle est la différence entre JSF, Servlet et JSP ?

J'ai quelques questions. Ce sont :

  1. Quel est le lien entre JSP et Servlet ?
  2. JSP est-il une sorte de servlet ?
  3. Quel est le lien entre JSP et JSF ?
  4. Est-ce que JSF est une sorte de JSP basé sur une interface utilisateur pré-construite comme ASP.NET-MVC ?

3 votes

Dans JSF 2.0+, le xml n'est pas nécessaire.

1261voto

BalusC Points 498232

JSP (JavaServer Pages)

JSP est un Technologie de visualisation Java qui s'exécute sur la machine serveur et qui vous permet d'écrire des modèles de texte dans des langages côté client (comme HTML, CSS, JavaScript, etc.). JSP supporte taglibs qui sont soutenus par des éléments de code Java qui vous permettent de contrôler le flux ou la sortie de la page de manière dynamique. Un taglib bien connu est JSTL . JSP supporte également Langage d'expression qui peut être utilisé pour accéder aux données du backend (via les attributs disponibles dans les scopes de la page, de la requête, de la session et de l'application), le plus souvent en combinaison avec des taglibs.

Lorsqu'une JSP est demandée pour la première fois ou lorsque l'application web démarre, le conteneur de servlets la compile dans une classe étendant HttpServlet et l'utiliser pendant la durée de vie de l'application web. Vous pouvez trouver le code source généré dans le répertoire de travail du serveur. Dans par exemple Tomcat c'est le /work répertoire. Lors d'une requête JSP, le conteneur de servlets exécute la classe JSP compilée et envoie la sortie générée (généralement juste du HTML/CSS/JS) à travers le serveur web sur un réseau vers le côté client, qui à son tour l'affiche dans le navigateur web.

Servlets

Servlet est un Interface de programmation d'applications (API) Java exécuté sur la machine serveur, qui intercepte les demandes faites par le client et génère/envoie une réponse. Un exemple bien connu est le HttpServlet qui fournit des méthodes pour accrocher sur HTTP en utilisant le populaire Méthodes HTTP como GET y POST . Vous pouvez configurer HttpServlet pour écouter un certain modèle d'URL HTTP, qui peut être configuré dans la section web.xml ou, plus récemment, avec Java EE 6 con @WebServlet annotation.

Lorsqu'une servlet est demandée pour la première fois ou lors du démarrage de l'application Web, le conteneur de servlets en crée une instance et la garde en mémoire pendant toute la durée de vie de l'application Web. La même instance sera réutilisée pour chaque requête entrante dont l'URL correspond au modèle d'URL de la servlet. Vous pouvez accéder aux données de la requête par HttpServletRequest et traiter la réponse par HttpServletResponse . Ces deux objets sont disponibles en tant qu'arguments de méthode dans n'importe quelle méthode surchargée de l'élément HttpServlet comme doGet() y doPost() .

JSF (JavaServer Faces)

JSF est un cadre MVC basé sur des composants qui est construit au-dessus de l'API Servlet et qui fournit composants via des taglibs qui peuvent être utilisés dans JSP ou toute autre technologie de visualisation basée sur Java, telle que Facettes . Facelets est beaucoup plus adapté à JSF qu'à JSP. Il fournit notamment de grandes capacités de création de modèles como composants composites alors que JSP n'offre que l'option <jsp:include> pour le templating dans JSF, de sorte que vous êtes obligé de créer des composants personnalisés avec du code Java brut (ce qui est un peu opaque et beaucoup de travail fastidieux) lorsque vous voulez remplacer un groupe répété de composants par un seul composant. Depuis JSF 2.0, JSP a été déprécié en tant que technologie de vue en faveur de Facelets.

Nota : JSP lui-même n'est PAS déprécié, seule la combinaison de JSF avec JSP est dépréciée.

Nota : JSP possède de grandes capacités de templating au moyen de Taglibs, en particulier le ( Fichier Tag ) variante. Ce qui manque, c'est un modèle JSP combiné à JSF.

En tant que MVC ( Modèle-Vue-Contrôleur ), JSF fournit le FacesServlet comme la seule demande-réponse Contrôleur . Il vous décharge de toutes les tâches standard et fastidieuses liées aux requêtes/réponses HTTP, telles que la collecte des données de l'utilisateur, leur validation/conversion, leur intégration dans des objets de modèle, l'invocation d'actions et le rendu de la réponse. De cette façon, vous obtenez essentiellement une page JSP ou Facelets (XHTML) pour les éléments suivants Voir et une classe JavaBean comme Modèle . Les composants JSF sont utilisés pour lier la vue au modèle (comme le fait votre contrôle Web ASP.NET) et les composants JSF sont utilisés pour lier la vue au modèle. FacesServlet utilise le Arbre des composants JSF pour faire tout le travail.

Questions connexes

0 votes

@BalusC : J'ai vu ce type de code utilisé en jsp au lieu du code java - <c:forEach items="${items}"> <jsp:attribute name="var"> <mytag:doesSomething/> </jsp:attribute> Qu'est-ce que c'est ?

8 votes

@Shashank : Pas entièrement. Seulement le <c:forEach> provient de JSTL. Voir aussi stackoverflow.com/tags/jstl/info

1 votes

Oui. <mytag:doesSomething/> ressemble à une balise personnalisée et <jsp:attribute> une balise jsp.

87voto

S.Lott Points 207588

Voir http://www.oracle.com/technetwork/java/faq-137059.html

La technologie JSP fait partie de la famille des technologies Java de la famille des technologies Java. Les pages JSP sont compilées en servlets et peuvent appeler des composants JavaBeans (beans) ou composants Enterprise JavaBeans (enterprise beans) pour effectuer traitement sur le serveur. En tant que telle, la technologie JSP est un élément clé d'une architecture hautement évolutive pour applications Web.

Voir https://jcp.org/en/introduction/faq

R : La technologie JavaServer Faces est un cadre permettant de créer des interfaces utilisateur pour les applications Web. La technologie JavaServer Faces comprend les éléments suivants

Un ensemble d'API pour : la représentation des composants de l'IU et gérer leur état, gérer les événements et la validation des entrées, définir la navigation dans les pages, et prendre en charge l'internationalisation et l'accessibilité.

Une bibliothèque de balises personnalisées JavaServer Pages (JSP) pour exprimer une interface JavaServer Faces dans une page JSP.

JSP est un type spécialisé de servlet.

JSF est un ensemble de balises que vous pouvez utiliser avec JSP.

8 votes

"JSP est un type spécialisé de servlet. JSF est un ensemble de balises que vous pouvez utiliser avec JSP." Cette affirmation décrit le mieux la relation entre les trois !

34voto

zaga250 Points 341

Du point de vue du navigateur/client

JSP et JSF ont la même apparence, mais selon les exigences de l'application, JSP est plus adapté aux applications basées sur les demandes et les réponses.

JSF est destiné aux applications Web plus riches basées sur les événements. Je vois l'événement comme beaucoup plus granulaire que la demande/réponse.

Du point de vue du serveur

La page JSP est convertie en servlet, et son comportement est minimal.

La page JSF est convertie en arbre de composants (par un FacesServlet spécialisé) et suit le cycle de vie des composants défini par la spécification.

24voto

Kishor P Points 1868

Servlets :

L'API Java Servlet permet aux développeurs Java d'écrire du code côté serveur pour diffuser du contenu Web dynamique. Comme d'autres API propriétaires de serveurs Web propriétaires, l'API Java Servlet offre de meilleures performances que CGI ; Toutefois, elle présente quelques avantages supplémentaires essentiels. Comme les servlets ont été codées en Java, elles offrent une approche de conception orientée objet (OO). et, plus important encore, sont capables de fonctionner sur n'importe quelle plate-forme. Ainsi, le même code était portable sur tout hôte supportant Java. Les servlets ont grandement contribué à la popularité de Java, qui est devenu une technologie largement utilisée pour les applications Web côté serveur. technologie pour le développement d'applications Web côté serveur.

JSP :

JSP est construit au-dessus des servlets et fournit une solution plus simple, basée sur les pages, pour générer de grandes quantités de contenu HTML dynamique pour le Web. pour générer de grandes quantités de contenu HTML dynamique pour les interfaces utilisateur pour les interfaces utilisateur Web. JavaServer Pages permet aux développeurs et concepteurs Web d'éditer simplement des pages HTML avec des balises spéciales pour les parties dynamiques de Java. dynamiques. JavaServer Pages fonctionne à l'aide d'un servlet spécial connu sous le nom de un conteneur JSP, qui est installé sur un serveur Web et traite toutes les demandes de visualisation de pages JSP. demandes d'affichage de pages JSP. Le conteneur JSP traduit une requête JSP demandé en code de servlet qui est ensuite compilé et immédiatement exécuté. Les demandes subséquentes de la même page invoquent simplement le servlet d'exécution de la page. Si une modification est apportée à la JSP sur le serveur, une demande de visualisation de la page déclenche une nouvelle traduction, une nouvelle compilation et un nouvel affichage. pour la visualiser déclenche une nouvelle traduction, une nouvelle compilation et un nouveau redémarrage de la JSP. la servlet d'exécution.

JSF :

JavaServer Faces est un cadre Java standard pour la création d'interfaces utilisateur. pour les applications Web. Plus important encore, il simplifie le développement de l'interface utilisateur, qui est souvent l'une des parties les plus difficile et fastidieuse du développement d'applications Web.
Bien qu'il soit possible de créer des interfaces utilisateur en utilisant des éléments fondamentaux du langage technologies Web Java (telles que les servlets Java et les JavaServer Pages) sans un cadre complet conçu pour le développement d'applications d'applications Web d'entreprise, ces technologies de base peuvent souvent entraîner une variété de problèmes de développement et de maintenance. Plus important encore, au plus important encore, lorsque les développeurs parviennent à une solution de qualité de production, le même ensemble de problèmes résolus par JLC peut se produire. de production, le même ensemble de problèmes résolus par JSF l'aura été de manière manière non standard. JavaServer Faces est conçu pour simplifier le développement d'interfaces utilisateur pour les applications Web Java dans les domaines suivants manières suivantes :
- Il fournit une approche de développement centrée sur les composants, indépendante du client pour construire des interfaces utilisateur Web. et améliore ainsi la productivité des développeurs et la facilité d'utilisation.
- Il simplifie l'accès et la gestion des données de l'application à partir de l'interface utilisateur Web. interface utilisateur Web.
- Il gère automatiquement l'état de l'interface utilisateur l'interface utilisateur entre plusieurs requêtes et plusieurs clients de manière simple et et discrète.
- Il fournit un cadre de développement qui est convivial pour un public diversifié de développeurs possédant des compétences différentes.
- Il décrit un ensemble standard de modèles architecturaux pour une application web.

[ Source : Référence complète : JSF ]

4 votes

Ce n'était pas moi, mais j'imagine que c'est parce que tu as juste copié et collé une réponse d'un livre.

7 votes

@Oberon : Merci pour la réponse. J'ai mis du temps à trouver les mots exacts, alors j'ai choisi le livre. Si ce n'est pas approprié, alors vous ou n'importe qui peut me suggérer de supprimer la réponse. Je serai heureux de le faire.

18voto

Karthi Points 92

Il existe également des situations où vous pouvez privilégier JSP par rapport à JSF. La nature de l'application doit être le facteur décisif pour choisir la technologie.

Si vous avez une interaction GUI riche et que beaucoup de scripts Java sont nécessaires, alors préférez JSF. En fait, si l'architecture de votre application GUI est orientée composants et même pilotée comme Swing, alors JSF est le meilleur.

Si l'application n'est qu'une simple soumission de formulaire, ne nécessitant pas beaucoup d'interaction avec l'interface graphique, alors JSP peut faire l'affaire si l'apprentissage d'une nouvelle technologie est une charge supplémentaire et si un cadre complexe n'est pas nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X