Quel est le rapport entre JSP et Servlet ? JSP est-il une sorte de Servlet ? Quels sont les rapports entre JSP et JSF ? JSF est-il une sorte de JSP basé sur une interface utilisateur pré-construite comme ASP.NET-MVC ?
JSP est une technologie de visualisation Java s'exécutant sur la machine serveur qui vous permet d'écrire des modèles de texte dans des langages côté client (comme HTML, CSS, JavaScript, etc.). JSP supporte les [taglibs][2], qui sont soutenus par des morceaux de code Java qui vous permettent de contrôler le flux de la page ou la sortie de manière dynamique. Un taglib bien connu est [JSTL][3]. JSP prend également en charge le [Expression Language][4], qui peut être utilisé pour accéder à des données dorsales (via des attributs disponibles dans la page, la requête, la session et 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
][5] et l'utilise pendant toute 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. Par exemple, dans [Tomcat][6], il s'agit du répertoire /work
. 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.
Le servlet est une interface de programmation d'application Java (API) fonctionnant 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 les requêtes [HTTP][8] en utilisant les populaires [méthodes HTTP][9] telles que GET
et POST
. Vous pouvez configurer les HttpServlet
s pour écouter un certain modèle d'URL HTTP, qui est configurable dans web.xml
, ou plus récemment avec [Java EE 6][10], avec l'annotation @WebServlet
.
Lorsqu'une servlet est demandée pour la première fois ou pendant le démarrage de l'application Web, le conteneur de servlets crée une instance de celle-ci 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 demande 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
][11] et gérer la réponse par [HttpServletResponse
][12]. Ces deux objets sont disponibles en tant qu'arguments de méthode dans n'importe quelle méthode surchargée de HttpServlet
, comme doGet()
et doPost()
.
JSF est un cadre MVC basé sur des composants qui est construit au-dessus de l'API Servlet et fournit des [composants][14] via des taglibs qui peuvent être utilisés dans JSP ou toute autre technologie de vue basée sur Java comme [Facelets][15]. Facelets est beaucoup plus adapté à JSF que JSP. Elle offre notamment d'excellentes [capacités de modélisation][16] telles que les [composants composites][17], alors que JSP ne propose que le [<jsp:include>
][18] pour la modélisation dans JSF, ce qui vous oblige à créer des composants personnalisés avec du code Java brut (ce qui est un peu opaque et fastidieux) lorsque vous souhaitez remplacer un groupe répété de composants par un seul. Depuis JSF 2.0, JSP a été déprécié comme technologie de visualisation au profit des Facelets.
Note : JSP lui-même n'est PAS déprécié, seule la combinaison de JSF avec JSP est dépréciée.
Note : JSP possède de grandes capacités de modélisation au moyen de Taglibs, en particulier la variante ([Tag File][2]). Ce qui fait défaut, c'est la modélisation JSP en combinaison avec JSF.
En tant que framework MVC ([Model-View-Controller][19]), JSF fournit le [FacesServlet
][20] comme unique Contrôleur de requête-réponse. 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 placement 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 View et une classe JavaBean pour Model. Les composants JSF sont utilisés pour lier la vue au modèle (comme le fait votre contrôle web ASP.NET) et le FacesServlet
utilise l'arbre des composants JSF pour faire tout le travail.
Voir http://www.oracle.com/technetwork/java/faq-137059.html
La technologie JSP fait partie de la famille technologique Java.
famille de technologies. Les pages JSP sont compilées en servlets et peuvent appeler des composants composants JavaBeans (beans) ou des composants JavaBeans d'entreprise (enterprise beans) pour effectuer traitement sur le serveur. À ce titre, la technologie JSP est un élément clé d'une architecture hautement évolutive pour les systèmes de gestion de contenu. architecture hautement évolutive pour applications Web.
Voir https://jcp.org/en/introduction/faq
A : La technologie JavaServer Faces est un
cadre permettant de créer des interfaces utilisateur pour les applications Web. La technologie JavaServer Faces technologie comprend :
un ensemble d'API pour : représenter les 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 balise personnalisée JavaServer Pages (JSP) bibliothèque permettant d'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.