Développement d’applications Web avec JSP et XML Partie I : Fast Track JSP

Si vous avez eu l’occasion de créer des applications web en utilisant des technologies telles que Common Gateway Interface (CGI) et des servlets, vous êtes habitué à l’idée d’écrire un programme pour générer la page entière (la partie statique et la partie dynamique) en utilisant ce même programme. Si vous cherchez une solution dans laquelle vous pouvez séparer les deux parties, ne cherchez pas plus loin. Les pages JavaServer (JSP) sont ici.

Les pages JSP vous permettent de séparer la présentation frontale de la logique métier (niveaux central et back-end). C’est une excellente approche de Développement rapide d’applications (RAD) pour les applications Web. Cette série d’articles fournit un tutoriel pratique expliquant comment développer des applications Web modernes pour le marché d’aujourd’hui et de demain. Cette série commence par cet article, qui explique les concepts et les avantages de la technologie JSP, puis vous montre comment utiliser cette technologie passionnante et comment créer des composants réutilisables pour la gestion des formulaires.

Le Web dynamique

Le Web est passé d’un système d’information distribué hypermédia en réseau offrant des informations statiques à un marché pour la vente et l’achat de biens et de services. Les applications de plus en plus sophistiquées pour permettre ce marché nécessitent une technologie de présentation d’informations dynamiques.

Les solutions de première génération comprenaient CGI, qui est un mécanisme permettant d’exécuter des programmes externes via un serveur Web. Le problème avec les scripts CGI est l’évolutivité ; un nouveau processus est créé pour chaque requête.

Les solutions de deuxième génération comprenaient des fournisseurs de serveurs Web fournissant des plug-ins et des API pour leurs serveurs. Le problème est que leurs solutions étaient spécifiques à leurs produits serveur. Par exemple, Microsoft a fourni des pages de serveur actif (ASP) qui ont facilité la création de contenu dynamique. Cependant, leur solution ne fonctionnait qu’avec Microsoft IIS ou un serveur Web personnel. Par conséquent, si vous vouliez utiliser ASP, vous deviez vous engager sur les produits Microsoft et vous ne bénéficieriez pas de la liberté de choisir votre serveur Web et votre système d’exploitation préférés!

Les servlets sont une autre technologie de deuxième génération très populaire dans l’informatique d’entreprise. Les servlets facilitent l’écriture d’applications côté serveur en utilisant la technologie Java. Le problème avec CGI ou les servlets, cependant, est que vous devez suivre le cycle de vie d’écriture, de compilation et de déploiement.

Les pages JSP sont une solution de troisième génération qui peut être facilement combinée à certaines solutions de deuxième génération, créant ainsi un contenu dynamique et facilitant et accélérant la création d’applications Web fonctionnant avec une variété d’autres technologies: serveurs web, navigateurs Web, serveurs d’applications et autres outils de développement.

JavaServer Pages (JSP)

La technologie JSP est une spécification ouverte et disponible gratuitement développée par Sun Microsystems comme alternative à la technologie Active Server Pages (ASP) de Microsoft, et un composant clé de la spécification Java 2 Enterprise Edition (J2EE). De nombreux serveurs d’applications disponibles dans le commerce (tels que BEA WebLogic, IBM WebSphere, Live JRun, Orion, etc.) prennent déjà en charge la technologie JSP.

JSP contre ASP

JSP et ASP offrent des fonctionnalités similaires. Ils utilisent tous deux des balises pour autoriser le code intégré dans une page HTML, le suivi de session et la connexion à la base de données. Certaines des différences triviales sont:

  • Les pages ASP sont écrites en VBScript et les pages JSP sont écrites dans le langage de programmation Java. Par conséquent, les pages JSP sont indépendantes de la plate-forme et les pages ASP ne le sont pas.
  • Les pages JSP utilisent la technologie JavaBeans comme architecture de composants et les pages ASP utilisent des composants ActiveX.

Au-delà de ces différences triviales, il existe un certain nombre de différences importantes qui peuvent vous aider à choisir une technologie pour votre organisation:

  • Vitesse et évolutivité : Bien que les pages ASP soient mises en cache, elles sont toujours interprétées. En revanche, les pages JSP sont compilées dans des servlets Java et chargées en mémoire la première fois qu’elles sont appelées et exécutées pour tous les appels suivants. Cela donne aux pages JSP un avantage d’aspeed et d’évolutivité par rapport aux pages ASP.
  • Balises extensibles : Les pages JSP ont une fonctionnalité avancée appelée balises extensibles. Ce mécanisme permet aux développeurs de créer des balises personnalisées. En d’autres termes, les balises extensibles vous permettent d’étendre la syntaxe des balises JSP pages. Vous ne pouvez pas le faire avec les pages ASP.
  • Liberté de choix: Sauf si vous installez Chili!ASP doux, les pages ASP fonctionnent uniquement avec Microsoft IIS et le serveur Web personnel. L’utilisation de pages ASP nécessite un engagement envers les produits Microsoft, tandis que les pages JSP ne vous lient à aucun serveur Web ou système d’exploitation spécifique. Les pages JSP deviennent un standard largement pris en charge.

Pour une comparaison plus détaillée entre les pages JSP et les pages ASP, voir Comparaison JSP et ASP.

Environnement logiciel

Pour exécuter des pages JSP, vous avez besoin d’un serveur Web avec un conteneur Web conforme aux spécifications JSP et servlet. Le conteneur Web s’exécute sur le serveur Web et gère l’exécution de toutes les pages JSP et servlets s’exécutant sur ce serveur Web. Tomcat 3.2.1 est une implémentation de référence complète pour les spécifications de Servlet Java 2.2 et JSP 1.1. Téléchargez et installez des versions binaires de Tomcat.

Pour configurer Tomcat:

  • Définissez la variable d’environnement JAVA_HOME pour qu’elle pointe vers le répertoire racine de votre installation Java 2 Standard Edition (J2SE).
  • Définissez la variable d’environnement TOMCAT_HOME pour qu’elle pointe vers le répertoire racine de votre installation Tomcat.
  • Pour démarrer Tomcat, utilisez TOMCAT_HOME/bin/startup.bat pour Windows ou startup.sh pour UNIX.
    Par défaut, il commencera à écouter sur le port 8080.
  • Enregistrez vos fichiers .jsp dans TOMCAT_HOME/webapps/examples/jsp et vos classes JavaBeans dans TOMCAT_HOME/webapps/examples/web-inf/classes.

Remarque: Si vous travaillez sous Windows, vous risquez d’obtenir une erreur d’environnement hors espace lorsque vous essayez de démarrer Tomcat. Il existe deux façons de résoudre ce problème: soit modifier le paramètre de mémoire initial de la fenêtre DOS à une valeur supérieure à 3200, SOIT modifier la configuration.fichier sys et ajoutez la ligne suivante : SHELL=c:\PATHTO\command.com /E:4096 /P.

Fonctionnement des pages JSP

Une page JSP est essentiellement une page Web avec du code HTML traditionnel et des bits de code Java. L’extension de fichier d’une page JSP est « .jsp « plutôt que ».html « ou ».htm », et qui indique au serveur que cette page nécessite un traitement spécial qui sera accompli par une extension de serveur ou un plug-in. Voici un exemple simple:

Exemple 1: date.jsp

 <HTML><HEAD><TITLE>JSP Example</TITLE></HEAD><BODY BGCOLOR="ffffcc"><CENTER><H2>Date and Time</H2><% java.util.Date today = new java.util.Date();out.println("Today's date is: "+today);%></CENTER> </BODY> </HTML> 

Cet exemple contient du code HTML traditionnel et du code Java. La balise <% identifie le début d’un scriptlet et la balise %> identifie la fin d’un scriptlet. Lorsque date.jsp est demandé à partir d’un navigateur Web, vous voyez quelque chose de similaire à la figure 1.

Figure 1 : Date de demande.jsp

En coulisses

Lorsque cette page (date.jsp) est appelée, elle sera compilée (par le moteur JSP) dans un servlet java. À ce stade, le servlet est géré par le moteur de servlet comme n’importe quel autre servlet. Le moteur de servlet charge ensuite la classe de servlet (à l’aide d’un chargeur de classe) et l’exécute pour créer du code HTML dynamique à envoyer au navigateur, comme le montre la figure 2. Pour cet exemple, la servlet crée un objet Date et l’écrit sous forme de chaîne dans l’objet out, qui est un flux de sortie vers le navigateur.

Figure 2: Flux de requête/réponse lors de l’appel d’un JSP

La prochaine fois que la page est demandée, le moteur JSP exécute le servlet déjà chargé à moins que la page JSP n’ait changé, auquel cas il est automatiquement recompilé en servlet et exécuté.

Éléments de script

Dans l’exemple date.jsp, le nom complet de la classe Date est utilisé, y compris le nom du package, ce qui peut devenir fastidieux. Si vous souhaitez créer une instance de Date simplement en utilisant : Date today = new Date(); sans avoir à spécifier le chemin complet de la classe, utilisez la directive page comme suit :

Exemple 2:date2.jsp

 <%@page import="java.util.*" %><HTML> <HEAD> <TITLE>JSP Example</TITLE> </HEAD> <BODY BGCOLOR="ffffcc"><CENTER> <H2>Date and Time</H2> <% java.util.Date today = new java.util.Date();out.println("Today's date is: "+today);%></CENTER></BODY> </HTML>

Pourtant, une autre façon de faire la même chose en utilisant la balise <%= est d’écrire:

Exemple 3: date3.jsp

 <%@page import="java.util.*" %> <HTML> <HEAD> <TITLE>JSP Example</TITLE> </HEAD> <BODY BGCOLOR="#ffffcc"> <CENTER> <H2>Date and Time</H2> Today's date is: <%= new Date() %> </CENTER> </BODY> </HTML> 

Comme vous pouvez le voir, la même chose peut être accomplie en utilisant différentes balises et techniques. Il existe plusieurs éléments de script JSP. Voici quelques règles conventionnelles qui vous aideront à utiliser efficacement les éléments de script JSP:

  • Utilisez <% ... %> pour gérer les déclarations, les expressions ou tout autre type d’extrait de code valide. L’exemple 1 ci-dessus est un exemple.
  • Utilisez la directive page comme dans <%@page ... %> pour définir le langage de script. En outre, il peut être utilisé pour spécifier des instructions import. Voici un exemple :
    <%@page language="java" import="java.util.*" %>.
  • Utilisez <%! .... %> pour déclarer des variables ou des méthodes. Par exemple :
    <%! int x = 10; double y = 2.0; %>.
  • Utilisez <%= ... %> pour définir une expression et convertir le résultat en String. Par exemple :
    <%= a+b %> ou <%= new java.util.Date() %>.
  • Utilisez la directive include comme dans <%@ include ... %> pour insérer le contenu d’un autre fichier dans le fichier JSP principal. Par exemple :
    <%@include file="copyright.html" %>.

Traitement des formulaires

L’une des parties les plus courantes des applications de commerce électronique est un formulaire HTML dans lequel l’utilisateur entre des informations telles que le nom et l’adresse. En utilisant JSP, les données du formulaire (les informations saisies par l’utilisateur dans le formulaire) sont stockées dans l’objet request qui est envoyé du navigateur au conteneur JSP. La demande est traitée et le résultat est renvoyé via l’objet response au navigateur. Ces deux objets sont implicitement à votre disposition.

Pour montrer comment gérer les formulaires HTML à l’aide de JSP, voici un exemple de formulaire avec deux champs: l’un pour le nom et l’autre pour l’e-mail. Comme vous pouvez le voir, le formulaire HTML est défini dans un fichier source JSP. La méthode request.getParameter est utilisée pour récupérer des données du formulaire dans des variables créées à l’aide de balises JSP.

La page process.jsp imprime soit un formulaire, soit les informations fournies par l’utilisateur en fonction des valeurs des champs du formulaire. Si les valeurs du formulaire sont null, le formulaire est affiché, sinon, les informations fournies par l’utilisateur sont affichées. Notez que le formulaire est créé et géré par du code dans le même fichier JSP.

Échantillon 4: processus.jsp

 <HTML> <HEAD> <TITLE>Form Example</TITLE> </HEAD> <BODY BGCOLOR="#ffffcc"> <% if (request.getParameter("name")==null && request.getParameter("email") == null) { %> <CENTER> <H2>User Info Request Form</H2> <FORM METHOD="GET" ACTION="/developer/technicalArticles/xml/WebAppDev/process.jsp"> <P> Your name: <input type="text" name="name" size=26> <P> Your email: <input type="text" name="email" size=26> <P> <input type="submit" value="Process"> </FORM> </CENTER> <% } else { %> <%! String name, email; %> <% name = request.getParameter("name"); email = request.getParameter("email"); %> <P> <B>You have provided the following info</B>: <P> <B>Name</B>: <%= name %><P> <B>Email</B>: <%= email %> <% } %> </BODY> </HTML> 

Si process.jsp est demandé à partir d’un serveur Web, vous voyez quelque chose de similaire à la figure 3.

Figure 3 : processus.jsp chargé

Entrez votre nom et votre adresse e-mail et cliquez sur Processus pour soumettre le formulaire pour traitement, et vous voyez quelque chose de similaire à la figure 4.

Figure 4: Le formulaire est traité

Composants réutilisables

L’exemple de formulaire ci-dessus est simple en ce sens qu’il n’y a pas beaucoup de code impliqué. Lorsque plus de code est impliqué, il est important de ne pas mélanger la logique métier avec la présentation frontale dans le même fichier. Séparer la logique métier de la présentation permet des modifications de chaque côté sans affecter l’autre. Cependant, le code JSP de production doit être limité à la présentation frontale. Alors, comment implémentez-vous la partie logique métier?

C’est là que les JavaBéens entrent en jeu. Cette technologie est un modèle de composant portable indépendant de la plate-forme qui permet aux développeurs d’écrire des composants et de les réutiliser partout. Dans le contexte de JSP, JavaBeans contient une logique métier qui renvoie des données à un script sur une page JSP, qui à son tour formate les données renvoyées par le composant JavaBean pour les afficher par le navigateur. Une page JSP utilise un composant JavaBean en définissant et en obtenant les propriétés qu’elle fournit.

Quels sont les avantages

L’utilisation de JavaBeans pour augmenter les pages JSP présente plusieurs avantages:

  • Composants réutilisables: différentes applications pourront réutiliser les composants.
  • Séparation de la logique métier et de la logique de présentation : vous pouvez modifier la façon dont les données sont affichées sans affecter la logique métier.
  • Protéger votre propriété intellectuelle en sécurisant le code source.Exemple

: Utilisation de JavaBeans avec JSP

Maintenant, voyons comment modifier l’exemple process.jsp ci-dessus pour utiliser JavaBeans. Dans le formulaire ci-dessus, ce sont deux champs: name et email. Dans JavaBeans, ce sont des propriétés appelées. Donc, vous écrivez d’abord un composant JavaBean avec les méthodes setX et getX, où X est le nom de la propriété. Par exemple, si vous avez des méthodes get et set : setName et getName, vous avez une propriété appelée name. L’échantillon 5 montre un composant FormBean.

Les bons composants doivent pouvoir interagir avec d’autres composants de différents fournisseurs. Par conséquent, pour réaliser la réutilisation des composants, il y a deux règles importantes (qui sont imposées par l’architecture JavaBeans) à suivre:

  1. Votre classe bean doit fournir un constructeur sans arguments afin qu’il puisse être créé en utilisant Beans.instantiate.
  2. Votre classe bean doit prendre en charge la persistance en implémentant l’interface Serializable ou Externalizable.

Échantillon 5: FormBean.java

 package userinfo; import java.io.*; public class FormBean implements Serializable { private String name; private String email; public FormBean() { name = null; email = null; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } } 

Pour utiliser le composant FormBean dans le fichier JSP, vous devez instancier le composant bean. Ceci est fait en utilisant la balise <jsp:useBean>. La ligne suivante <jsp:setProperty> est exécutée lorsque le bean est instancié et utilisée pour initialiser les propriétés du bean. Dans ce cas, les deux propriétés (name et email) sont définies à l’aide d’une seule instruction. Alternativement, il est possible de définir les propriétés une à la fois, mais vous devez d’abord récupérer la date du formulaire. Voici un exemple de la façon dont vous définissez la propriété name:

 <%! String yourname, youremail; %> <% yourname = request.getParameter("name"); %> <jsp:setProperty name="formbean" property="name" value="<%=yourname%>"/> 

Une fois que les propriétés ont été initialisées avec les données extraites du formulaire, les valeurs de propriétés sont récupérées pour présentation à l’aide de <jsp:getProperty> dans la partie else, comme indiqué dans l’échantillon 6.

Échantillon 6: process2.jsp

 <jsp:useBean class="userinfo.FormBean"/><jsp:setProperty name="formbean" property="*"/> <HTML> <HEAD><TITLE>Form Example</TITLE></HEAD><BODY BGCOLOR="#ffffcc"><% if (request.getParameter("name")==null && request.getParameter("email") == null) { %><CENTER><H2>User Info Request Form </H2><form method="GET" action="/developer/technicalArticles/xml/WebAppDev/process2.jsp"><P>Your name: <input type="text" name="name" size=27><p> Your email: <input type="text" name="email" size=27> <P> <input type="submit" value="Process"></FORM></CENTER><% } else { %><P><B>You have provided the following info</B>: <P> <B>Name</B>: <jsp:getProperty name="formbean"property="name"/> <P> <B>Email</B>: <jsp:getPropertyname="formbean" property="email"/> <% } %> </BODY> </HTML> 

Conclusion

Les développeurs intéressés par le développement d’applications Web de production de qualité devraient se familiariser avec les technologies applicables non seulement au marché d’aujourd’hui mais aussi à celui de demain, à savoir JSP et XML. Le prochain article discutera des fonctionnalités fournies par la technologie JSP qui conviennent parfaitement au travail avec XML; et vous montrera comment utiliser efficacement JSP avec XML. JSP et XML constituent une excellente combinaison pour les applications Web qui partagent des informations, car les pages JSP prennent en charge XML directement sous la forme de bibliothèques de balises personnalisées JSP. Restez à l’écoute pour plus d’informations à ce sujet dans le prochain article de cette série.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.