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

826

J'ai quelques questions. Ceux-ci 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. JSF est-il une sorte de JSP basé sur l'interface utilisateur de pré-construction comme ASP.NET-MVC?
Cheung
la source
3
Dans JSF 2.0+, xml n'est pas nécessaire.
Divyesh Kanzariya

Réponses:

1229

JSP (pages JavaServer)

JSP est une technologie de vue Java exécutée sur la machine serveur qui vous permet d'écrire du texte de modèle dans des langages côté client (comme HTML, CSS, JavaScript, etc.). JSP prend en charge les taglibs , qui sont soutenus par des morceaux de code Java qui vous permettent de contrôler le flux de pages ou la sortie de manière dynamique. Un taglib bien connu est JSTL . JSP prend également en charge le langage d'expression , qui peut être utilisé pour accéder aux données de backend (via les attributs disponibles dans les portées de page, de demande, de session et d'application), principalement en combinaison avec des balises taglibs.

Lorsqu'un JSP est demandé pour la première fois ou au démarrage de l'application Web, le conteneur de servlet le compilera dans une classe d'extension HttpServletet 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 Tomcat par exemple , c'est le /workrépertoire. Sur une demande JSP, le conteneur de servlet exécutera la classe JSP compilée et enverra la sortie générée (généralement juste HTML / CSS / JS) via le serveur Web sur un réseau côté client, qui l'affichera à son tour dans le navigateur Web.

Servlets

Servlet est une interface de programmation d'application (API) Java exécutée 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 celui HttpServletqui fournit des méthodes pour accrocher les requêtes HTTP en utilisant les méthodes HTTP populaires telles que GETet POST. Vous pouvez configurer HttpServlets pour écouter un certain modèle d'URL HTTP, qui est configurable dans web.xml, ou plus récemment avec Java EE 6 , avec @WebServletannotation.

Lorsqu'une servlet est demandée pour la première fois ou au démarrage de l'application Web, le conteneur de servlet 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 HttpServletRequestet 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 au-dessus de l'API Servlet et fournit des composants via des bibliothèques de balises qui peuvent être utilisées dans JSP ou toute autre technologie de vue basée sur Java telle que Facelets . Facelets est beaucoup plus adapté à JSF qu'à JSP. Il offre notamment de grandes capacités de création de modèles telles que des composants composites , tandis que JSP ne propose essentiellement que des <jsp:include>modèles dans JSF, de sorte que vous êtes obligé de créer des composants personnalisés avec du code Java brut (qui est un peu opaque et beaucoup de travail fastidieux) lorsque vous souhaitez remplacer un groupe de composants répété 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 lui-même n'est PAS obsolète, seule la combinaison de JSF avec JSP est obsolète.

Remarque : JSP a de grandes capacités de création de modèles au moyen de Taglibs, en particulier la variante ( Tag File ). JSP modèle en combinaison avec JSF est ce qui manque.

En tant que framework MVC ( Model-View-Controller ), JSF fournit FacesServletle seul contrôleur de demande-réponse . Il prend tout le travail de demande / réponse HTTP standard et fastidieux de vos mains, comme la collecte des entrées utilisateur, leur validation / conversion, leur placement dans les 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 en tant que 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 FacesServletutilise l' arborescence des composants JSF pour effectuer tout le travail.

Questions connexes

BalusC
la source
8
@Shashank: Pas entièrement. Seul le <c:forEach>tag provient de JSTL. Voir aussi stackoverflow.com/tags/jstl/info
BalusC
1
Oui. <mytag:doesSomething/>ressemble à une balise personnalisée et à <jsp:attribute>une balise jsp.
Shashank Kadne
3
Comme il s'agit d'une réponse extrêmement populaire, je veux ajouter un élément très important qui est les fichiers de balises JSP qui permettent la création de balises personnalisées pour la composition et la mise en page sans écrire de code Java. Cette fonctionnalité est extrêmement utile et fait partie de la norme depuis de nombreuses années mais reste sous-utilisée.
jiggy
1
@johnny Facelets est la technologie d'affichage préférée depuis la sortie de Java EE 6 en 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). L'ensemble minimal de technologies pour développer des applications Web Java n'est pas plus élevé que la plupart des autres langues, mais il y a beaucoup plus d'options et de concurrents, ce qui prête à confusion pour les nouveaux arrivants. Développement Web en Ruby? Le premier choix est évident.
DavidS
1
@BalusC +1 pour une explication détaillée. Ma réponse préférée.
Anish B.21
84

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

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

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

R: La technologie JavaServer Faces est un cadre de création d'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é.

Une bibliothèque de balises personnalisées JavaServer Pages (JSP) pour 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.

S.Lott
la source
6
"JSP est un type de servlet spécialisé. JSF est un ensemble de balises que vous pouvez utiliser avec JSP." Cette déclaration décrit le mieux la relation entre les trois!
2016
34

Du point de vue du navigateur / client

JSP et JSF se ressemblent tous les deux. Conformément aux exigences de l'application, JSP est plus adapté aux applications basées sur les demandes et les réponses.

JSF est ciblé pour des applications Web basées sur des événements plus riches. 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 n'a qu'un comportement 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 la spécification.

Vh24
la source
23

Servlets:

L'API Java Servlet permet aux développeurs Java d'écrire du code côté serveur pour fournir du contenu Web dynamique. Comme les autres API de serveur Web propriétaires, l'API Java Servlet offre des performances améliorées par rapport à CGI; cependant, il présente certains avantages supplémentaires clés. Étant donné que les servlets ont été codés en Java, ils fournissent une approche de conception orientée objet (OO) et, plus important encore, peuvent fonctionner sur n'importe quelle plate-forme. Ainsi, le même code était portable sur tout hôte prenant en charge Java. Les servlets ont grandement contribué à la popularité de Java, car il est devenu une technologie largement utilisée pour le développement d'applications Web côté serveur.

JSP:

JSP est construit au-dessus des servlets et fournit une solution basée sur des pages plus simple pour générer de grandes quantités de contenu HTML dynamique pour les interfaces utilisateur Web. JavaServer Pages permet aux développeurs et concepteurs Web de modifier simplement des pages HTML avec des balises spéciales pour les parties Java dynamiques. JavaServer Pages fonctionne en ayant 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 un JSP demandé en code de servlet qui est ensuite compilé et immédiatement exécuté. Les requêtes suivantes sur la même page appellent simplement le servlet d'exécution de la page. Si une modification est apportée à la JSP sur le serveur, une demande pour la visualiser déclenche une autre traduction, compilation et redémarrage du 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 difficiles et fastidieuses du développement d'applications Web.
Bien qu'il soit possible de créer des interfaces utilisateur en utilisant les technologies Web Java fondamentales (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 entraîner une variété de problèmes de développement et de maintenance. Plus important encore, au moment où les développeurs parviendront à une solution de qualité de 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 des 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 créer des interfaces utilisateur Web, améliorant ainsi la productivité des développeurs et la facilité d'utilisation.
• 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 qui est convivial pour un public de développeurs diversifié avec différents ensembles de compétences.
• Il décrit un ensemble standard de modèles architecturaux pour une application Web.

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

Kishor Prakash
la source
3
Ce n'était pas moi, mais j'imagine que c'est parce que vous copiez et collez simplement une réponse d'un livre.
mawburn
7
@Oberon: Merci pour la réponse. Il m'a fallu un certain temps pour trouver les mots exacts, alors je suis allé pour le livre. Si ce n'est pas approprié, vous ou n'importe qui pouvez me suggérer de retirer la réponse. Je serai ravi de le faire.
Kishor Prakash
18

Il existe également des situations où vous pouvez préférer JSP à JSF. La nature de l'application devrait être le facteur décisif pour choisir la technologie.

Si vous avez une riche interface graphique et beaucoup de scripts Java nécessaires, privilégiez JSF. Fondamentalement, si l'architecture de votre application graphique est comme orientée composants et même pilotée comme Swing, JSF est le meilleur.

Si l'application est simplement une soumission de formulaire simple, pas beaucoup d'interaction GUI nécessaire, alors JSP pourrait bien faire si l'apprentissage d'une nouvelle technologie est un frais généraux et qu'un cadre complexe n'est pas nécessaire.

Karthi
la source
13

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

  • 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.
caqueter
la source
2
JSP est converti en servlet une fois lorsque le serveur a reçu la demande.
caquet
... lorsque le serveur a reçu la PREMIÈRE demande. Mise en cache de l'esprit.
dbalakirev
10

c'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.

mahesh
la source
6

La différence fondamentale entre les servlets et JSP est que dans les servlets nous écrivons du code java et que nous incorporons du code HTML et il y a juste une casse inverse avec JSP. Dans JSP, nous écrivons du code HTML et nous intégrons du code java à l'aide de balises fournies par JSP.

user3608245
la source
5

Java Server Pages (JSP) est une technologie java qui permet aux développeurs et concepteurs Web de développer rapidement et de maintenir facilement des pages Web dynamiques, riches en informations qui exploitent 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 altérer le contenu dynamique sous-jacent.

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

Voici un tableau qui compare les caractéristiques des scriplets et des facettes:

entrez la description de l'image ici La source

Yster
la source
0
JSP:means HTML+Java Code:

JSP a son propre cycle de vie jsp_init () jsp_service () jsp_destroy

Après la première demande, JSP convertit en fichier .java. Il existe trois types de balises que nous utilisons
1.) Sans script

<%  %>

Ici, le développeur peut déclarer toutes les choses que le développeur souhaite prendre 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 certaines données liées à 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 le remplissage de bienvenue s'affichera.
Maintenant, après avoir effectué une action, il recherchera l'url et après ce processus, il recherchera lui-même la servlet particulière. l'opération de service sera exécutée.

JSF:

JSF a 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 une grille de panneaux et il y a différentes faces pour cela.

Rich Faces
Prime Faces.
Ankit
la source
-1

Les JSP sont le composant View de MVC (Model View Controller). Le contrôleur prend la demande entrante et la transmet au modèle, qui peut être un bean qui accède à la base de données. Le JSP formate ensuite la sortie en utilisant HTML, CSS et JavaScript, et la sortie est ensuite renvoyée au demandeur.

metrangia
la source
-1

JSF est un cadre avancé dans lequel son architecture basée sur Model-View-Controller (MVC) est très facile à mettre en œuvre pour les projets. Le principal avantage de JSF par rapport à JSP est le rendu dynamique facile des composants sur le navigateur basé sur les conditions et l'intégration facile des événements ajax.

La partie frontale de l'application JSF, c'est-à-dire les fichiers xhtml, sont ceux qui sont montrés à l'utilisateur via un navigateur. Ces fichiers xhtml appellent en interne des beans gérés, par exemple des contrôleurs dans lesquels la logique d'application réelle est écrite.

Les contrôleurs appellent en interne divers services qui communiquent avec la base de données (en utilisant Hibernate ou l'API JPA). Voilà comment le flux se déroule en bref.

JSF est également utilisé en combinaison avec RichFaces qui est un cadre pour donner une apparence riche à votre application Web.

JSF + RichFaces + Hibernate / JPA est une bonne technologie pour apprendre à coup sûr!

Nikhil
la source
-2

Jsp a également un code de servlet intégré qui ne nécessite aucune compilation externe, il peut être exécuté directement. Les modifications prendront effet dans jsp directement dans un navigateur.

Le servlet doit être compilé (c'est-à-dire qu'il aura une création de classe spécifique)

Jsf est un composant de vue de MVC Framework

Mahender Reddy Yasa
la source
-2

JSP signifie JAVA SERVER PAGE ........ jsp n'est pas une servlet. Jsp utilise le code et la balise HTML à la fois en soi, vous n'avez pas besoin de créer séparément un HTML et un servlet.Jsp joue un rôle magnifique dans l'application Web. Servlet est une classe java qui joue un rôle pour faire de votre page HTML de statique à dynamique.

Roopam
la source
2
Les JSP sont en effet convertis en composants Servlet. "Les JSP sont traduits en servlets au moment de l'exécution". Source: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev
-2

Les servlets sont les programmes java côté serveur qui s'exécutent à l'intérieur du conteneur Web. L'objectif principal de la servlet est de traiter les demandes reçues du client.

Java Server Pages est utilisé pour créer des pages Web dynamiques. Jsp a été introduit pour écrire du code java plus html dans un seul fichier, ce qui n'était pas facile à faire dans le programme des servlets. Et un fichier jsp est converti en servlet java lors de sa traduction.

Java Server Faces est un framework Web MVC qui simplifie le développement de l'interface utilisateur.

Hetal Rachh
la source