web-dev-qa-db-fra.com

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

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

795
Cheung

JSP (JavaServer Pages)

JSP est une technologie de visualisation Java s'exécutant sur le serveur, qui vous permet d'écrire un modèle de texte dans les langages côté client (tels que HTML, CSS, JavaScript, etc.). ). JSP prend en charge taglibs , qui s'appuie sur des éléments de code Java vous permettant de contrôler le flux de page ou la sortie de manière dynamique. Une balise bien connue est JSTL . JSP prend également en charge Expression Language , qui peut être utilisé pour accéder aux données dorsales (via les attributs disponibles dans la portée de la page, de la requête, de la session et de l'application), généralement en combinaison avec taglibs.

Lorsqu'un JSP est demandé pour la première fois ou au démarrage de l'application Web, le conteneur de servlets le compilera dans une classe étendue HttpServlet et l'utilisera 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 , il s'agit du répertoire _/work_. Sur une requête JSP, le conteneur de servlet exécute la classe JSP compilée et envoie la sortie générée (généralement uniquement HTML/CSS/JS) via le serveur Web via un réseau côté client, qui l'affiche à son tour dans le navigateur Web.

Servlets

Servlet est une interface de programmation d'application Java (API) s'exécutant sur le serveur, qui intercepte les requêtes émises par le client et génère/envoie une réponse. Un exemple bien connu est HttpServlet qui fournit des méthodes pour connecter les requêtes HTTP à l’aide des méthodes populaires HTTP telles que GET et POST. Vous pouvez configurer HttpServlets pour écouter un certain modèle d'URL HTTP configurable dans _web.xml_ ou plus récemment avec Java EE 6 , avec l'annotation _@WebServlet_.

Lors de la première demande d'un servlet ou lors du démarrage de l'application Web, le conteneur de servlets en crée une instance et la conserve en mémoire pendant la durée de vie de l'application Web. La même instance sera réutilisée pour chaque demande entrante dont l'URL correspond au modèle d'URL du servlet. Vous pouvez accéder aux données de la demande par HttpServletRequest et gérer la réponse par HttpServletResponse . Les deux objets sont disponibles en tant qu'arguments de méthode dans l'une des méthodes remplacées de HttpServlet, telles que doGet() et doPost().

JSF (JavaServer Faces)

JSF est un framework MVC basé sur des composants qui est construit sur l'API Servlet et fournit composants via des taglibs qui peuvent être utilisés dans JSP ou toute autre technologie d'affichage basée sur Java, telle que Facelets . Facelets est beaucoup plus adapté à JSF que JSP. Il fournit notamment d'excellentes capacités de modélisation telles que composants composites , alors que JSP n'offre en principe que le <jsp:include> pour la modélisation dans JSF, de sorte que vous êtes obligé de créer des composants personnalisés avec du code brut Java (qui est un peu opaque et qui demande beaucoup de travail fastidieux) lorsque vous souhaitez remplacer un groupe répété de composants par un seul composant. Depuis JSF 2.0, JSP est devenu obsolète en tant que technologie d'affichage au profit de Facelets.

Remarque : JSP n'est PAS obsolète, seule la combinaison de JSF avec JSP est déconseillée.

Remarque : JSP possède d'excellentes capacités de modélisation grâce à Taglibs, en particulier la variante ( Tag File ). Ce qui manque, c'est la création de modèles JSP en combinaison avec JSF.

En tant que structure MVC ( Model-View-Controller ), JSF fournit le FacesServlet en tant qu'unique requête-réponse Controller . Il prend en charge tous les travaux de requête/réponse HTTP standard et fastidieux, tels que la collecte des entrées de l'utilisateur, leur validation/conversion, leur insertion dans des objets de modèle, l'appel des actions et le rendu de la réponse. De cette façon, vous vous retrouvez avec une page JSP ou Facelets (XHTML) pour View et une classe JavaBean sous la forme Model . Les composants JSF sont utilisés pour lier la vue au modèle (comme le fait votre contrôle Web ASP.NET) et FacesServlet utilise l’arborescence des composants JSF pour effectuer tout le travail.

Questions connexes

1183
BalusC

Voir http://www.Oracle.com/technetwork/Java/faq-137059.html

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

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

R: La technologie JavaServer Faces est une structure permettant de créer des interfaces utilisateur pour les applications Web. La technologie JavaServer Faces comprend:

Un ensemble d'API pour: représenter les composants de l'interface utilisateur 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é.

Bibliothèque de balises personnalisées JSP (JavaServer Pages) permettant d'exprimer une interface JavaServer Faces dans une page JSP.

JSP est un type de servlet spécialisé.

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

78
S.Lott

Du point de vue du navigateur/du client

JSP et JSF ont tous deux la même apparence. Selon les exigences de l'application, JSP est plus adapté aux applications basées sur la requête.

JSF est destiné aux applications Web plus riches basées sur des événements. Je vois l'événement comme beaucoup plus granulaire que 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 arborescence de composants (par FacesServlet spécialisé) et suit le cycle de vie des composants défini par spec.

31
Vh24

Servlets:

L'API Java Servlet permet aux développeurs Java d'écrire du code côté serveur pour la fourniture de contenu Web dynamique. Comme d'autres API de serveur Web propriétaires, l'API Servlet Java offrait de meilleures performances que CGI. Cependant, il présente des avantages supplémentaires essentiels. Comme les servlets ont été codés en Java, ils fournissent une approche de conception orientée objet et, plus important encore, peuvent être exécutés sur n’importe quelle plate-forme. Ainsi, le même code était portable pour tout hôte prenant en charge Java. Les servlets ont grandement contribué à la popularité de Java, qui est devenu une technologie largement utilisée pour le développement d'applications Web côté serveur.

JSP:

JSP repose sur des servlets et fournit une solution plus simple, basée sur des pages, permettant de générer de grandes quantités de contenu HTML dynamique pour les interfaces utilisateur Web. JavaServer Pages permet aux développeurs et aux concepteurs Web de modifier simplement des pages HTML avec des balises spéciales pour les portions dynamiques, Java. JavaServer Pages fonctionne avec un servlet spécial appelé conteneur JSP, qui est installé sur un serveur Web et gère toutes les demandes d'affichage de page JSP. Le conteneur JSP traduit une JSP demandée en code de servlet qui est ensuite compilé et exécuté immédiatement. Les demandes suivantes adressées à la même page appellent simplement le servlet d'exécution pour la page. Si une modification est apportée au fichier JSP sur le serveur, une demande de visualisation déclenche une autre traduction, compilation et redémarrage du servlet d'exécution.

JSF:

JavaServer Faces est un cadre standard Java permettant de créer des interfaces utilisateur pour les applications Web. Plus important encore, cela simplifie le développement de l'interface utilisateur, qui constitue souvent l'un des aspects les plus difficiles et fastidieux du développement d'applications Web.
Bien qu'il soit possible de créer des interfaces utilisateur à l'aide des technologies Web Java (telles que les servlets Java et les pages JavaServer) sans un cadre complet conçu pour le développement d'applications Web d'entreprise, ces technologies de base peuvent souvent conduire à une variété de problèmes de développement et de maintenance. Plus important encore, lorsque les développeurs parviendront à une solution de qualité production, le même ensemble de problèmes résolus par JSF aura été résolu de manière non standard. JavaServer Faces est conçu pour simplifier le développement d'interfaces utilisateur pour les applications Web Java des manières suivantes:
• Il fournit une approche de développement centrée sur les composants et indépendante du client pour la création d'interfaces utilisateur Web, améliorant ainsi la productivité et la facilité d'utilisation des développeurs.
• Il simplifie l'accès et la gestion des données d'application à partir de l'interface utilisateur Web.
• Il gère automatiquement l’état de l’interface utilisateur entre plusieurs demandes et plusieurs clients de manière simple et discrète.
• Il fournit un cadre de développement convivial pour un public de développeurs diversifié possédant différentes compétences.
• Il décrit un ensemble standard de modèles d'architecture pour une application Web.

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

22
Kishor Prakash

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

Si vous avez une interaction graphique riche et que vous avez besoin de beaucoup de scripts Java, privilégiez JSF. Fondamentalement, si votre architecture d'application graphique est orientée composant et même pilotée par Swing, alors JSF est le meilleur.

Si l'application est simplement un formulaire de soumission simple et que peu d'interaction avec l'interface graphique est nécessaire, alors JSP pourrait être utile si l'apprentissage d'une nouvelle technologie est une surcharge et qu'un cadre complexe est également inutile.

16
Karthi

Servlet - c'est Java la couche côté serveur.

  • JSP - c'est Servlet avec HTML
  • JSF - ses composants sont basés sur des bibliothèques de balises
  • JSP - il est converti en servlet une fois lorsque le serveur a reçu la demande.
12
cackle

il est vrai que JSP est converti en servlet au moment de l’exécution, et JSF est une chose totalement nouvelle afin de rendre la page Web plus lisible, car JSF permet d’écrire toutes les structures de programmation sous forme de balise.

10
mahesh

La différence fondamentale entre Servlets et JSP réside dans le fait que nous écrivons du code Java dans Servlets. Nous intégrons du code HTML et il n'y a qu'un casse inverse avec JSP. Dans JSP, nous écrivons du code HTML et incorporons ainsi le code Java à l'aide de balises fournies par JSP.

5
user3608245

JSP (Java Server Pages) est la technologie Java qui permet aux développeurs et aux concepteurs Web de se développer rapidement et de maintenir facilement une base de données riche en informations. pages Web dynamiques exploitant les systèmes d’entreprise existants. La technologie JSP sépare l'interface utilisateur de la génération de contenu, permettant aux concepteurs de modifier la mise en page globale sans modifier le contenu dynamique sous-jacent.

Facelets est le premier langage de déclaration de page autre que JSP conçu pour JSF (Java Server Faces) qui fournit aux développeurs JSF un modèle de programmation plus simple et plus puissant que le JSP. Il résout différents problèmes dans JSP pour le développement d'applications Web.

Voici un tableau qui compare les caractéristiques des grilles et facelets:

enter image description hereSource

5
Yster
JSP:means HTML+Java Code:

Les JSP ont leur propre cycle de vie jsp_init () jsp_service () jsp_destroy

Après la première demande, JSP converti en fichier .Java. Il y a trois types de balises que nous utilisons
1.) Sans script

<%  %>

Ici, le développeur peut déclarer toutes les choses qu’il veut prendre dans les données.

2.) balise d'expression

<%=  %>

Ici, le développeur peut utiliser certaines données liées à l’impression

3.) Déclaration

<!% %>

Ici, le développeur peut déclarer des données relatives à la méthode.

Servlet:

Servlet a son propre cycle de vie.

init()
service()
destroy()

Après la première demande, le conteneur lira les données du fichier web.xml, puis, après la fin du texte, le remplissage sera affiché.
Maintenant, après avoir effectué l'action, il effectuera une recherche dans l'URL et, après ce processus, dans la servlet particulière elle-même. opération de service va effectuer.

JSF:

JSF possède sa propre interface utilisateur et son cycle de vie peut fonctionner de six manières,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Pour ui ici pour le tableau ici nous utilisons grille de panneau et il y a différentes faces pour cela.

Rich Faces
Prime Faces.
0
Ankit