Chapitres traités   

Choix des chapitres Les JSP - Java Server Pages

Vous avez remarqué que les servlets sont des outils très puissants et très faciles à mettre en oeuvre puisque d'une part, chaque servlet est compilée et donc la réponse à une requête est très rapide comparativement aux CGI classiques, et par ailleurs, il existe plein d'objets qui sont créés automatiquement pour la situation et qu'il suffit d'utiliser leurs méthodes respectives pour répondre aux différentes requêtes. Toutefois, il peut paraître fastidieux d'utiliser la méthode println pour envoyer des balises HTML. Java dispose d'une technologie qui mélange à la fois le balisage HTML (script) et le codage propre aux servlets (partie compilée). Il s'agit de la technologie JSP - Java Server Pages.

Dans les pages JSP, Il suffit d'écrire le code HTML classique normalement, en passant par vos outils de création de pages Web. Le code correspondant aux parties dynamiques doit ensuite être placé entre des étiquettes spéciales, dont la plupart commencent par <% et se terminent par %>. Les pages JSP possèdent l'extension ".jsp" au lieu de l'extension ".htm" pour les pages HTML classiques. Dans le cas d'une extension ".jsp", le serveur Tomcat est au courant qu'au sein de la page Web, il va trouver du code Java.

<%= request.getParameter("title") %> Bien que le code que vous écriviez s'apparente plus à un fichier HTML classique qu'à un servlet, dans les coulisses, la page JSP est convertie automatiquement en un servlet normal, le code HTML statique étant simplement envoyé dans le flux de sortie associé à la méthode service du servlet. Cette conversion est normalement effectuée lors de la première requête à cette page. Pour éviter que le premier utilisateur n'attende un long moment pendant la conversion de la page JSP en servlet et pendant sa compilation, les développeurs peuvent simplement demander cette page immédiatement après l'avoir installée.

Choix du chapitre Eléments de scripts

Les éléments de scripts JSP permettent d'insérer du code dans le servlet qui sera généré à partir de la page JSP. Il en existe trois formes :

  1. Les expressions de la forme <%= expression %>, qui sont évaluées et insérées dans la sortie du servlet.
  2. Les scriptlets de la forme <% code %>, qui sont insérés dans la méthode _jspService du servlet (appelée par service).
  3. Les déclarations de la forme <%! code %>, qui sont insérées dans le corps de la classe du servlet, en dehors des méthodes existantes.

Choix du chapitre Expressions JSP

Une expression JSP permet d'insérer des valeurs directement dans la sortie. En voici le format <%= Java Expression %> L'expression est évaluée, convertie en une chaîne, puis insérée dans la page. Cette évaluation est effectuée au moment de l'exécution (lorsque la page est demandée) et dispose donc d'un accès complet aux informations concernant la requête. Par exemple, l'expression suivante affiche la date et l'heure à laquelle la page a été demandée :

Date courrante : <%= new java.util.Date() %>

Il faut préciser que la classe Date fait parti du langage java classique et n'est pas spécialisé à JSP.

Choix du chapitre Variables prédéfinies

Pour simplifier ces expressions, vous pouvez utiliser certaines variables prédéfinies. Ce sont des objets implicites dont les plus importants sont :

  1. request : Cette variable est l'objet HttpServletRequest associé à la requête. Elle permet d'accéder aux paramètres de la requête, au type de la requête (c'est-à-dire GET ou POST), et aux en-têtes HTTP reçus (comme les cookies).
  2. response : Cette variable est l'objet HttpServletResponse envoyé avec la réponse au client.
  3. session : Cette variable est l'objet HttpSession associé à la requête. Rappelez-vous que les sessions sont créées automatiquement, donc cette variable est liée même s'il n'existe aucune référence de session en entrée.
  4. out : Il s'agit du PrintWriter utilisé pour envoyer la sortie au client. Cependant, pour que l'objet response puisse être employé, il existe une version de PrintWriter appelée jspWriter qui utilise une mémoire temporaire. out est utilisé presque exclusivement dans des scriptlets (voir plus loin), puisque les expressions JSP sont placées automatiquement dans le flux de sortie et elles ont donc rarement besoin de faire référence explicitement à out.

En voici un exemple :

Nom de l'hôte : <%= request.getRemoteHost() %>

Choix du chapitre Première page JSP

Vous allez mettre en oeuvre un petit exemple de page JSP qui utilise les expressions à l'aide de l'environnement de JBuilder. Le contenu de la page JSP consistera à fournir la date et l'heure ainsi que le nom de l'ordinateur hôte. La technique de mise en oeuvre est exactement la même que pour les servlets, à savoir :

  1. Définir un projet qui pourra être placé dans le répertoire de base de Tomcat. (Souvenez-vous que si notre projet ne dispose pas d'applet, il est possible d'avoir notre projet à l'extérieur du serveur Tomcat).
  2. Définir une "Application Web" qui devra impérativement, cette fois-ci, être placé dans le répertoire de base de Tomcat.
  3. Créer votre page JSP (au lieu de la servlet).

Nous allons donc utiliser cette procédure en commançant par l'élaboration du projet. Ce projet, vous l'appellerez : DateHote.

Tout de suite après, définissez votre "Application Web" que vous pouvez appeler DateHote.

Enfin, à l'aide de la galerie d'objet, sélectionnez l'expert JSP pour fabriquer votre première page que vous nommerez "DateHote.jsp". C'est la première page de l'expert qu'il faut régler. Pour la deuxième, il suffit de cliquer sur "Terminer".

Vous remarquez que vous obtenez l'ossature générale d'un page Web avec toutes les balises HTML nécessaires. Il suffit de compléter la page et de placer les expressions propres au langage Java.

DateHote.jsp

L'écriture est extrêmement simple. On se rend compte que si le serveur doit renvoyer des pages Web, il est plus judicieux d'utiliser les JSP plutôt que des servlets. Vous allez tester votre page. N'oubliez pas de lancer votre serveur Tomcat.

Le serveur Tomcat est placé sur l'ordinateur portable avec le port 80.

La première fois, le chargement paraît long. En fait, la page est compilée en servlet. Par contre, plus tard, le chargement sera au contraire extrêmement rapide puisque c'est un programme qui fonctionne en tâche de fond. Finalement, nous avons à la fois l'avantage d'une écriture sous forme de script comme ASP, PHP, ... et en plus la rapidité d'un système compilé.

Choix du chapitre Scriptlets JSP

Si vous désirez quelque chose de plus complexe que l'insertion d'une simple expression, les scriptlets JSP permettent d'insérer n'importe quel code dans la méthode jspService du servlet (qui est appelée par service). Les scriptlets ont la forme suivante :

<% code Java %> // Il n'y a plus le signe "="

Les scriptlets ont accès aux mêmes variables définies automatiquement que les expressions (request, response, session, out, etc...) ; Donc si vous souhaitez que la sortie apparaisse dans la page résultante, vous devez utiliser la variable out, comme dans l'exemple suivant :

Dans ce cas particulier, vous auriez pu atteindre le même effet plus facilement au moyen de l'expression JSP suivante :

Protocole utilisé : <%= request.getProtocol() %><%= request.getQueryString() %>

En général, cependant, le scriptlet peut effectuer une grande quantité de tâches qui ne peuvent pas être exécutées uniquement avec des expressions. Parmi ces tâches se trouvent la mise à jour d'une base de données, ou encore l'exécution d'un code contenant des boucles, des instructions conditionnelles ou d'autres constructions complexes.

Deuxième page JSP - Traitement de formulaire

Nous allons reprendre le formulaire déjà traité avec la servlet, mais cette fois-ci à l'aide de JSP. La page à construire s'appellera donc Formulaire.jsp. Pour souvenir, revoici la page du formulaire :

Il faut modifier légèrement le code de la page html du formulaire pour qu'elle puisse appelée la page Formulaire.jsp :

Formulaire.htm

La page Formulaire.jsp est à construire à partir de "l'expert JSP" de Jbuilder. Au sein de la page, vous allez trouver à la fois des expressions et des scriptlets. On remarque que la plus grande partie du code est identique à la servlet équivalente.

Formulaire.jsp

Choix du chapitre Page Web dynamique avec choix des couleurs par l'utilisateur

A titre d'exercice, nous allons mettre en oeuvre une page web écrite en JSP qui permettra à l'utilisateur de choisir à la fois la couleur du fond et la couleur du texte de la page appelée. L'utilisateur devra passer ses paramètres directement sur l'URL dans la ligne d'adresse comme lorsqu'on utilise la méthode GET. les paramètres s'appellent Fond et Texte. Voici un exemple d'utilisation et le résultat obtenu.

Couleurs.jsp

Code de Couleurs.jsp

Choix du chapitre Déclarations JSP

Une déclaration JSP permet de définir des méthodes ou des attributs qui seront insérés dans le corps de la classe du servlet (en dehors de la méthode jspService appelée par service pour traiter la requête). Voici le format d'une déclaration :

<%! code Java %>

L'avantage de ces déclarations, c'est que ces attributs concervent leurs valeurs même lorsque nous sommes sortie de la page. Lorsque nous entrons de nouveau, nous retrouvons l'ancienne valeur. Comme les déclarations ne produisent aucune sortie, elles sont normalement utilisées en conjonction avec des expressions JSP ou des scriptlets.

Choix du chapitre Prise en compte du nombre d'accès sur notre page

Voici un exemple de code JSP qui affiche le nombre de requêtes obtenues pour la page actuelle, et depuis le dernier démarrage du serveur (ou depuis la dernière modification de la classe du servlet).

Compteur.jsp