Introduction à la programmation JSP

Transcription

Introduction à la programmation JSP
Projet de développement
Introduction à la
programmation JSP
Introduction à la programmation JSP
Introduction aux Servlets
Introduction aux servlets
●
●
●
●
●
●
Soubassement de JSP.
Écrit en Java.
Permet de répondre à une requête HTTP.
cfr CGI mais profite des avantages de JAVA (OOP,
multithread,...).
Notion de session (permet de conserver les valeurs des
données d'une session utilisateur à l'autre).
Chaque page JSP produira un servlet JAVA capable de
recevoir un requête HTTP et de renvoyer une réponse
HTTP.
Principe de fonctionnement des
servlets
●
●
●
●
●
●
Écrit en JAVA.
Réside et est exécuté sur le serveur.
Indépendant de la plate forme d'exécution.
Le conteneur de servlets gère la création, l'utilisation et
la destruction des servlets. (ex. Tomcat)
Le conteneur est multithread et une même instance de
servlet peut gérer plusieurs requêtes.
Les objets HttpServletRequest et HttpServletResponse
permettent de traiter la requête et la réponse.
Exemple de servlet
/** SalutMonde **/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SalutMonde extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>");
out.println("Exemple de servlet minimal SalutMonde");
out.println("</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>Salut à tout le monde</H1>");
out.println("</BODY>");
out.println("</HTML>");
}
}
Exemple de servlet
●
●
●
●
●
●
java.io contient l'objet PrintWriter.
javax.servlet et javax.servlet.http offrent le support de
l'interface API des servlets.
javax.servlet sait gérer d'autres servlets que ceux
correspondants aux protocoles HTTP.
La classe SalutMonde dérive de la classe HttpServlet.
La méthode doGet se charge de traiter les requêtes HTTP
reçues du navigateur Web.
Elle attend deux paramètres d'entrés et sait déclencher
deux exceptions.
Exemple de servlet
●
●
●
●
●
HttpServletRequest contient les informations concernant
la requête HTTP émise par le navigateur.
HttpServletResponse contient les informations relatives à
la réponse HTTP.
La classe SalutMonde surcharge (redéfini) la méthode
doGet avec les traitements dont elle a besoin.
PrinterWriter permet d'envoyer un document HTML sur
le flux de sortie.
Le conteneur de servlet retransmet ces données vers le
navigateur.
JSP et servlet
●
●
●
●
●
●
Une page JSP correspond à un servlet prêt à être exécuté.
Un servlet doit d'abord être compilé.
Dans le cas d'une page JSP, le conteneur effectue la
compilation « à la volée ».
Une page JSP est d'abord convertie en servlet sous forme
d'un fichier source JAVA.
Le servlet ainsi généré est automatiquement compilé.
Ceci se déroule lors de la première invocation de la page
JSP.
Introduction à la programmation JSP
JSP et HTML
Séparation entre JSP et HTML
●
●
●
JSP permet l'insertion de blocs de traitement
directement dans les pages HTML.
Les pages JSP sont stockées dans des fichiers à
extension .jsp.
Ils contiennent des éléments et des données fixes
–
Elements : Spécification du langage
–
Données fixes : Le reste (principalement le code
HTML)
Quatre types d'éléments
●
Les expressions : <%= expression %>
●
Les scriplets : <% scriplet %>
●
Les déclarations : <%! declaration %>
●
Les directives : <%@ directive %>
Les expressions JSP
●
●
●
●
Une expression est une portion de code qui
renvoie une valeur lorsqu'elle est exécutée.
La valeur renvoyée est de type string.
La valeur résultante est mise dans le fichier
généré à la place du code.
Les expressions servent à afficher la valeur d'une
variable dans la page JSP.
Exemple d'expression JSP
<%-- ServerInfo.jsp --%>
<html>
<head>
<title>Informations du serveur (serverinfo.jsp)</title>
</head>
<body>
Cette page JSP permet de récupérer deux informations du serveur.
<p>
<b>Nom du serveur :</b> <%= request.getServerName() %>
<p>
<b>N° de port du serveur :</b> <%= request.getServerPort() %>
<p>
</body>
</html>
Scriplet
●
La balise ne comporte que <%
●
Contient du code JAVA.
–
Déclaration de fonctions.
–
Déclaration de variables.
–
Expression.
–
...
Exemple de Scriplet
<%-- counter.jsp --%>
<html>
<head>
<title>Scriptlet compteur</title>
</head>
<body>
Cette page incrémente un compteur en affichant la valeur courante
à chaque tour de boucle.
<table border="1" width="100%">
<% for (int compteur = 0; compteur < 10; compteur++) { %>
<tr>
<td align="center"><b>Valeur = <%= compteur %></b></td>
</tr>
<% } %>
</table>
</body>
</html>
Les déclarations JSP
●
●
Le signe ! accolé à <%
Servent à déclarer des variables et des méthodes
qui deviennent accessibles à toute la page JSP.
Les déclarations JSP - exemple
<%-- colors.jsp --%>
<html>
<head>
<title>Scriptlet compteur en couleurs</title>
</head>
<body>
<%!
/** La fonction getRandomColor revoie une valeur hexadécimale **/
String getRandomColor () {
int red, green , blue;
red = (int)(Math.random() * 255);
green = (int)(Math.random() * 255);
blue = (int)(Math.random() * 255);
String ret = Integer.toHexString(red) + Integer.toHexString(green) +
Integer.toHexString(blue);
return ret.toUpperCase();
}
%>
Les déclarations JSP – exemple
Cette page incrémente un compteur en affichant la valeur courante
à chaque tour de boucle.
<table border="1" width="100%">
<% for (int compteur = 0; compteur < 10; compteur++) { %>
<tr>
<td align="center" bgcolor="#<%= getRandomColor() %>">
<b>Valeur = <%= compteur %></b>
</td>
</tr>
<% } %>
</table>
</body>
</html>
Les directives JSP
●
●
●
●
Servent à contenir des informations au conteneur
de servlets JSP.
La directive <%@ page
Par exemple l'attribut « import » pour importer
une série de paquetages JAVA que la page doit
pouvoir utiliser.
<% page import="java.util.*" %>
–
Classes Date et Calendar utilisées dans l'exemple.
Les directives JSP – exemple
<%-- calendar.jsp --%>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Utilisation d'une déclaration d'import</title>
</head>
<body>
Cette page affiche des informations temporelles.
<p>
<%! Date maDate = new Date(); %>
<%! Calendar calendrier = Calendar.getInstance(); %>
Les directives JSP – exemple
Nous sommes le <b><%= maDate %></b>
<p>
Ere courante :
<b> <%= calendrier.get(calendrier.ERA) %>.</b>
<br>
Quantième du mois :
<b><%= calendrier.get(calendrier.DAY_OF_MONTH) %>.</b>
<br>
Jour dans la semaine :
<b><%= calendrier.get(calendrier.DAY_OF_WEEK) %>.</b>
<br>
Jour de l'année :
<b><%= calendrier.get(calendrier.DAY_OF_YEAR) %>.</b>
<br>
Heure courante :
<b><%= calendrier.get(calendrier.HOUR_OF_DAY) %>.</b>
<br>
</body>
</html>
Directive <@ page : autres attributs
●
●
●
●
session : True ou False, détermine si la page peut
faire partie d'une session. La valeur par défaut est
True.
errorPage : URL relative de la page prévue pour
gérer les erreurs survenant dans la page JSP.
isErrorPage : Indique que la page est une page
spécialisé dans la gestion des erreurs. La valeur
par défaut est False.
...
Exemple de gestion d'erreur
<%-- divide2.jsp --%>
<%@ page errorPage="error.jsp" %>
<html>
<head>
<title>Deuxième exemple de division AVEC gestion d'erreur</title>
</head>
<body>
Cette page provoquera une erreur gérée par la page error.jsp si vous donnez
la valeur 0 à la variable nombre2.
<%
int nombre1 = 10;
int nombre2 = 0;
int resultat = nombre1/nombre2;
%>
<P>
Si nous divisons <b><%= nombre1 %></b> par <b><%= nombre2 %></b>,
nous obtenons <b><%= resultat %></b>.
</body>
</html>
Exemple de gestion d'erreur (2)
<%-- error.jsp --%>
<%@ page isErrorPage="true"
info="Ceci est une page de gestion d'erreurs."
import="java.io.*"
%>
<html>
<head>
<title>Page de gestion d'erreur</title>
</head>
<body>
Vous voyez cette page s'afficher car une exception a été déclenchée
dans la page JSP nommée divide.jsp.
<p>
<p>
L'erreur qui s'est produite était <b><%= exception.getMessage() %>.</b>
</body>
</html>
Données de formulaire
<%-- formAction2.jsp --%>
<html>
<title>Page de traitement de données</title>
<body>
<table>
<tr>
<td>Votre prénom est <b><%= request.getParameter("prenom") %></b></td>
</tr>
<tr>
<td>Votre nom est <b><%= request.getParameter("nom") %></b></td>
</tr>
<tr>
<td>Votre région est <b><%= request.getParameter("region") %></b></td>
</tr>
<tr>
<td>Vos couleurs préférées sont :
<%
// Affiche toutes les valeurs choisies
String couleurs[] = request.getParameterValues("couleur");
for (int i = 0; i < couleurs.length; i++) {
%>
<b> <%= couleurs[i] %> </b>
<% } %>
</td>
</tr>
<tr>
<td>Votre tranche d'âge est <b><%= request.getParameter("age") %></b></td>
</tr>
</table>
</body>
</html>

Documents pareils