jsp java server pages. introduction afin dimplémenter les règles métiers, coté serveur dans une...
TRANSCRIPT
JSP
Java Server Pages
Introduction
Afin d’implémenter les règles métiers, coté serveur dans une application Web, l’architecture Java propose trois solutions : En pur JAVA (servlets); À l’intérieur de code HTML (pages JSP); Mixage des deux premiers solutions.
Servlets
Exemple Servlets
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ExempleServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException { // positionnement du type de contenu res.setContentType("text/html"); // écriture du contenu PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>ExempleServlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<H1 align="center">ExempleServlet</H1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } }
JSP
Consiste à insérer dans le code HTML des instructions qui sont exécutées sur le serveur.
Lorsque la page est sollicitée par une requête, ces instructions peuvent produire de l’HTML mais aussi accéder à une base de données et effectuer des calculs.
Exemple JSP<%! Int compteur =0; %><HTML><BODY> Bonjour. <BR> <% compteur ++; if (compteur == 1) %> Vous etes le premier visiteur. <% else %> Vous etes le <%=compteur %> eme visiteur.</BODY></HTML>
Solution mixte
Les solutions moderne des applications Web, permettent de mêler les deux premières solutions (Servlets et JSP)
Eléments de JSP
Scriptlet; Déclaration de variable; Conditionnel; L’objet out; Déclaration de Tableau; Boucle for; Commentaire JSP; Traitement des formulaires;
scriptlet
Afin d’indiquer au serveur que ce qui suit est du JSP, en utilise la balise <% ………. %>
Déclaration de variable La balise <%! ……%> Permet de déclarer une variable. Exemple: <%! Int i; %> <%! Int i = 0;%> <%! Float f, g = 1.2, h; %> Remarque: l’identificateur d’une
variable doit respecter les règles des variables dans JAVA
Conditionnel L’expression conditionnel s’effectue
par: <% if (condition) { actions } %>
<% if (condition) { actions } else { actions } %>
Exemple <% int i = 0; %><html><head> <title> </title></head><body><h1><% ++1;If (i==1) { out.println(‘’vous etes le premier ‘’); }Else { out.print (‘’visiteur numero ‘’); out.println(i); }%></h1></body></html>
L’objet out
Out est un objet prédéfini dans les pages JSP qui dispose de deux méthodes : Print : pour afficher sur la page une
information syntaxe : out.print(…..); Println : pour afficher sur la page une
information avec un saut de ligne. syntaxe : out.prinln(….);
Exemple
<%! Int i = 0;%><html><head><title>exemple objet out </title> <head><body><h1 align = center> exemple </h1><% i++;If (i==1) { out.println(‘’Vous etes le premier visiteur’’);}Else { out.println(‘’Visiteur numero ‘’ + i); }<br> date courante : <%=new java.util.date() %></body></html>
Déclaration de Tableau Un tableau permet de gérer plusieurs
valeur de même type. La déclaration se fait dans JAVA. Exemple:
<% double[] prix = {12.5, 14, 18}; int[] qtes = {50, 20, 30}; %>
Boucle for La boucle for est constituée d’un en-
tête entre parenthèses et d’un corps. Syntaxe : for (variable itérative; condition
d’interaction; pas) { actions; }
Exemple boucle for et tableau<table border> <tr> <th>Quantite</th> <th>Prix</th> </tr> <% for (int i=0; i< prix.length; i++) { out.println(‘’<tr>’’); out.print(‘’<td>’’); out.print(qtes[i]); out.print(</td>); out.print(‘’<td>’’); out.print(prix[i]); out.print(</td></tr>); %></table>
Commentaire JSP
Un commentaire JSP s’effectue par la balise
<!-- ……… --> Remarque : si le commentaire est
dans le scriptlet c’est un commentaire JAVA.
Traitement des formulaires
Introduction; Méthodes GET et POST; Récupération de la valeur d’un
paramètre;
Introduction L’intérêt des formulaires est de pouvoir
introduire des données en vue d’être traitées par une logique métier.
L’utilisation de formulaire et fait en deux temps: L’utilisateur remplit un formulaire et le
soumet au serveur. Le serveur extrait les informations fournies
par l’utilisateur et les utilise pour construire la réponse.
Method GET Si l’attribut method de la balise form
est get, le navigateur met les valeurs des paramètres dans l’en-tête de la requête elle-même.
De plus, la requête contient en clair les valeurs des paramètres et est stockée telle quelle dans l’historique, ce qui est judicieux si l’un de ces paramètres est un mot de passe.
Method POST
Si l’attribut method de la balise form est post, le navigateur met les valeurs des paramètres dans l’en-tête de la requête elle-même.
Avec post, les valeurs des paramètres ne sont pas affichées dans l’URL.
Récupération de la valeur d’un paramètre.
La récupération de la valeur d’un paramètre s’effectue à travers l’objet request.
Cet objet dispose d’une méthode getParameter qui cherche la valeur d’un paramètre d’un formulaire.
Exemple de getParamater
<%String nomUtilisateur =
request.getParameter(‘’nom’’);String MotDePasse =
request.getParameter(‘’motDePasse’’);%>
Paramètres à valeurs multiples Un paramètre peut avoir une valeur
multiple. Dans ce cas, il faut utiliser la méthode getParameterValues().
Cette méthode renvoie un tableau de chaînes de caractères.
Exemple de paramètres à valeurs multiples
<%String[] sportsFavoris =
request.getParameterValues(‘’sp’’);Out.println(‘’<ul>’’);For (int i=0; i < sprortsFavoris.length ; i+
+) { out.println(‘’<li>’’ + sportsFavoris[i] +
‘’</li>’’);}Out.println(‘’</ul>’’);%>
Noms des paramètres La méthode getParameterNames
permet d’obtenir un tableau contenant les noms de tous les paramètres présents dans la requête.
Conversion d’une chaîne La méthode getParameter renvoie une chaîne
de caractères. Si le paramètre est une valeur numérique, il faut convertir la chaîne de caractères en nombre pour pouvoir l’utiliser.
Cela se fait par la méthode JAVA appropriée : Byte.parseByte; Short.parseShort; Integer.parseInt; Long.parseLong; Float.parseFloat; Double.parseDouble.
Exemple
<%String nbLignesCh =
request.getParameter(‘’nblignes’’);Int nbLignes =
Integer.parseInt(nbLignesCh);%>