Didacticiel JSTL (bibliothèque de balises standard JSP): Core & Exemples de balises personnalisées

Table des matières:

Anonim

JSTL est une bibliothèque de balises standard de la JSP. Nous verrons ici comment l'utilisation de différentes balises JSTL facilitera le codage JSP.

Dans ce didacticiel, vous apprendrez-

  • Qu'est-ce que JSTL
  • Noyau JSTL
  • Balises personnalisées JSP

Qu'est-ce que JSTL?

JSTL signifie bibliothèque de balises standard de pages de serveur Java, et il s'agit d'un ensemble de bibliothèques de balises JSP personnalisées qui fournissent des fonctionnalités de développement Web communes.

Avantages de JSTL

  1. Balise standard : elle fournit une couche riche de la fonctionnalité portable des pages JSP. Il est facile pour un développeur de comprendre le code.
  2. Code Neat and Clean : Alors que les scriplets confondent le développeur, l'utilisation de JSTL rend le code net et propre.
  3. Prise en charge automatique de JavabeansInterospection : Il présente un avantage de JSTL par rapport aux scriptlets JSP. Le langage d'expression JSTL gère très facilement le code JavaBean. Nous n'avons pas besoin de réduire les objets, qui ont été récupérés en tant qu'attributs de portée. L'utilisation du code de scriptlets JSP sera compliquée, et JSTL a simplifié cet objectif.
  4. Plus facile à lire pour les humains : JSTL est basé sur XML, qui est très similaire au HTML. Par conséquent, il est facile à comprendre pour les développeurs.
  5. Plus facile à comprendre pour les ordinateurs : des outils tels que Dreamweaver et la page d'accueil génèrent de plus en plus de code HTML. Les outils HTML font un excellent travail de formatage du code HTML. Le code HTML est mélangé avec le code de script. Comme JSTL est exprimé sous forme de balises compatibles XML, il est facile pour la génération HTML d'analyser le code JSTL dans le document.

Noyau JSTL

Les balises principales sont les balises les plus fréquemment utilisées dans JSP. Ils fournissent un soutien pour

  • Itération
  • Logique conditionnelle
  • Exception de capture
  • URL en avant
  • Rediriger, etc.

Pour utiliser les balises principales, nous devons d'abord définir la bibliothèque de balises et ci-dessous la syntaxe pour inclure une bibliothèque de balises.

Syntaxe:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Ici,

  • préfixe peut être utilisé pour définir toutes les balises principales et
  • uri est la bibliothèque de taglib à partir de laquelle il est importé

Voyons quelques-unes des balises principales en détail,

1. Sortie:

  • Le résultat de l'expression est affiché dans la balise out
  • Il peut directement échapper aux balises XML. Par conséquent, ils ne sont pas évalués comme des balises réelles

Syntaxe:

  • Ici, la valeur représente les informations vers la sortie, et elle est obligatoire
  • La valeur par défaut est l'échec de la sortie des informations, et ce n'est pas obligatoire
  • escapeXML - C'est vrai s'il échappe les caractères XML.

Exemple:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Balise principale JSP1 

Explication du code:

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est «c». Par conséquent, il peut être utilisé comme préfixe pour tous les coretags.

Ligne de code 12: Ici, nous utilisons coretag out avec le préfixe "c" et cette sortie affichera la valeur dans la balise d'expression. Par conséquent, la sortie sera nom

Lorsque vous exécutez le code ci-dessus, vous obtenez la sortie suivante:

Production:

  • Nous obtenons la valeur sous forme de nom à partir de la balise principale "out" qui s'imprimera dans le flux de sortie.

2. Attrape

  • Il intercepte toute exception jetable qui se produit dans le corps et s'affiche en sortie.
  • Il est utilisé pour gérer les erreurs et les attraper.

Syntaxe:

Ici, var représente le nom de la variable, qui contiendra une exception jetable.

Exemple:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Balise principale JSP2 <% int num = 10/0; %>L'exception est: $ {guruException}

Explication du code:

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est 'c', il peut donc être utilisé comme préfixe pour tous les coretags

Ligne de code 11-13: Coretag catch est utilisé pour intercepter l'exception et imprimer l'exception. Ici, l'exception est levée lorsque 10/0 et cette exception porte le nom "guruException".

Code Line 14: Nous imprimons "guruException".

Lorsque vous exécutez le code, vous obtiendrez la sortie suivante:

Production:

  • Nous obtenons une exception arithmétique comme / par zéro, et elle est affichée dans la sortie en utilisant la variable "guruException"

3. Importer

  • Nous pouvons importer le contenu d'un autre fichier dans une page JSP comme nous l'avons fait dans l'action d'inclusion JSP.
  • Ici, nous pouvons également inclure l'URL et le contenu sera affiché sur cette page.

Syntaxe:

Ici var est un nom de variable qui est un identifiant, qui contiendra le nom de fichier / uri.

uri est le nom de fichier relatif ou le nom d'urin.

coretag_jsp31.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Balise principale JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Insérez le titre ici  Le fichier s'affiche après l'importation 

Explication du code:

Coretag_jsp31.jsp

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est 'c', il peut donc être utilisé comme préfixe pour tous les coretags

Ligne de code 11-12: Ici, nous importons le fichier coretag_jsp32.jsp dans ce fichier à l'aide de la balise d'importation

Code Line13: Ici, nous imprimons le fichier coretag_jsp32.jsp en utilisant la balise out.

Lorsque vous exécutez le code ci-dessus, vous obtenez la sortie suivante.

Production:

  • Coretag_jsp32 est imprimé dans la sortie car ce fichier a été importé dans coretag_jsp31.jsp.

4. forEach

  • Il est utilisé pour itérer le nombre d'éléments dans une série d'instructions.
  • C'est la même chose qu'une boucle for Java.

Syntaxe:

  • Ici var représente le nom de la variable qui contiendra le nom du compteur
  • Begin représente la valeur de début du compteur
  • La fin représentera sa valeur finale

Exemple:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Balise principale JSP4 

Explication du code:

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est 'c', il peut donc être utilisé comme préfixe pour tous les coretags

Ligne de code 11-13: Ici, nous utilisons la boucle "forEach" où le nom de la variable est "gurucount", qui a commencé à compter comme 5 et à terminer comme 10. Nous imprimons la variable gurucount qui a des nombres commençant de 5 à 10.

Lorsque vous exécutez le code, vous obtenez la sortie suivante

Production:

  • La sortie que nous obtenons commence de 5 à 10.

5. Si

  • Il est utilisé pour tester les conditions.
  • Si la balise est utilisée pour tester une condition qu'elle soit vraie ou non basée sur cela, le bloc de code serait exécuté.

Syntaxe:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Balise principale JSP5 

Explication du code:

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est 'c', il peut donc être utilisé comme préfixe pour tous les coretags

Ligne de code 11: Ici, nous définissons la variable nommée count à 100

Ligne de code 12-14: Ici, nous utilisons "if condition" où nous vérifions si le nombre est égal à 100. Il est égal à 100 alors nous obtenons la sortie comme "Le nombre est de 100".

Lorsque vous exécutez le code ci-dessus, vous obtenez la sortie suivante

Production:

  • Comme la condition "si" est vraie, nous obtenons la sortie comme "Le compte est 100".

6. rediriger:

  • Il est utilisé pour rediriger la page actuelle vers une autre URL en fournissant l'URL relative de cette balise.
  • Il prend en charge les URL relatives au contexte

Syntaxe:

Ici, l'url est l'url relative vers laquelle elle doit être redirigée et le nom du contexte de l'application Web locale.

Exemple:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Balise principale JSP6 

Explication du code:

Ligne de code 3: Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est 'c', il peut donc être utilisé comme préfixe pour tous les coretags

Ligne de code 11: Ici, nous utilisons la "balise de redirection", où nous spécifions le nom de l'url, et lorsque nous cliquons sur cette page, elle redirige vers le site qui a été donné pour la redirection.

Lorsque vous exécutez le code ci-dessus, vous obtenez la sortie suivante;

Production:

  • Nous obtenons l'url de sortie guru99.com qui est redirigée par coretag_jsp6.jsp

Balises personnalisées JSP

  • Il s'agit d'un élément de langage JSP défini par l'utilisateur.
  • Lorsque JSP est traduit en servlet, la balise personnalisée est convertie en une classe qui agit sur un objet et est appelée en tant que gestionnaire de balises.
  • Ces actions lorsque le servlet est exécuté sont appelées par le conteneur Web.
  • Pour créer la balise personnalisée définie par l'utilisateur, nous devons créer le gestionnaire de balises qui étendra le SimpleTagSupport et nous devons remplacer la méthode doTag ().
  • Nous devons créer un TLD où nous devons mapper le fichier de classe dans TLD.

Avantages des balises personnalisées dans JSP:

  • Portable - Une action décrite dans une bibliothèque de balises doit être utilisable dans n'importe quel conteneur JSP.
  • Simple - Les utilisateurs non avertis doivent être capables de comprendre et d'utiliser ce mécanisme. Les fournisseurs de fonctionnalités JSP doivent trouver facile de les rendre disponibles en tant qu'actions.
  • Expressif - Le mécanisme doit prendre en charge un large éventail d'actions, y compris les actions imbriquées, les éléments de script à l'intérieur des corps d'action, la création, l'utilisation et la mise à jour de variables de script.
  • Utilisable à partir de différents langages de script - Bien que la spécification JSP ne définisse actuellement que la sémantique des scripts dans le langage de programmation Java, nous voulons laisser ouverte la possibilité d'autres langages de script.
  • Construit sur des concepts et des machines existants - Nous ne voulons pas réinventer ce qui existe ailleurs. De plus, nous voulons éviter les conflits futurs chaque fois que nous pouvons les prédire

Syntaxe:

Considérez que nous créons une balise testGuru et que nous pouvons utiliser la classeetaghandlertestTag, qui remplacera la méthode doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

De plus, nous devrons mapper cette classe testTag dans TLD (Tag Library Descriptor) car le conteneur JSP créera automatiquement un mappage entre le fichier de classe et l'URI mentionné dans le fichier TLD.

Interface de balise JSP

  • Cette classe devra étendre la classe SimpleTagSupport.
  • Cette classe devra remplacer la méthode doTag () qui fait partie de la classe SimpleTagSupport (le remplacement est une méthode héritée de la classe parente).
  • Cette interface est une sous-interface de l'interface JSPTag.
  • Il fournit des méthodes à exécuter au début et à la fin de la balise.
  • Nous devons également mapper cette classe dans le descripteur de bibliothèque de balises TLD ie

Nous considérons dans l'exemple ci-dessous

Méthode d'interface de balise

  • doTag () est une méthode que nous devons remplacer et qui aura le contenu de la balise.
  • Il prend le contexte JSP actuel en utilisant getJSPContext ()

Exemple:

Customtag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%> Balise personnalisée 

Custom.tld

 1.0  2.0  TLD de test  guruTag  demotest.guruTag  vide 

guruTag.java (TagHandler)

package demotest;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;La classe publique guruTag étend SimpleTagSupport {public void doTag () lance JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Guru Tag");}}

Explication du code:

guruTag.java (TagHandler)

Ligne de code 6: la classe guruTag étend la classe SimpleTagSupport qui est présente dans le jar javax.servlet.JSP

Ligne de code 7: Ici, nous remplaçons la méthode doTag () qui lève JspException et IOException.

Code Line 9-10: Dans cette méthode, le code sera intégré à la balise personnalisée qui sera appelée. Nous prenons un objet de JspWriter, et qui affichera "Guru Tag".

Custom.tld

Ligne de code 6: Ici, le nom de la balise personnalisée est «guruTag».

Ligne de code 7: La classe de balise est taghandlerclass, c'est-à-dire guruTag.java. Il prend le chemin complet du fichier de gestionnaire qui comprend le chemin du répertoire de l'emplacement du fichier.

Customtag_jsp1.jsp

Ligne de code 3 : Ce préfixe taglib est requis pour toutes les balises et le préfixe ajouté est «ex», il peut donc être utilisé comme préfixe pour tous les coretags et uri est custom.tld qui mappe le gestionnaire de balises.

Ligne de code 11: Ici, nous définissons la balise personnalisée "guruTag", qui appellera la méthode doTag () de la classe de gestionnaire et le code qu'elle contient sera exécuté.

Lorsque vous exécutez le code ci-dessus, vous obtenez la sortie suivante

Production:

  • Nous obtenons la sortie comme "GuruTag" de guruTag.java ie TagHandler, qui remplace la méthode doTag () et qui affiche "Guru Tag" comme sortie.

Résumé:

  • Dans cette section, nous avons découvert la bibliothèque de balises standard JSP dans laquelle nous avons créé des balises principales et des balises personnalisées.
  • Les balises principales incluent pour, if, redirect, import, catch des balises qui étaient des balises utilisées à des fins de base dans JSP.
  • De plus, nous avons créé des balises personnalisées dans lesquelles nous pouvons définir les balises et les utiliser dans JSP