new introduction à jsp (java server pages 1.x) java-jsp introduction … · 2000. 12. 6. ·...
TRANSCRIPT
-
Introduction à JSP (Java Server Pages 1.x) java-jsp
In © TECFA 6/12/00
)
O
A
P
ternet et Education
Introduction à JSP(Java Server Pages 1.x
Code: java-jsp
riginauxurl: http://tecfa.unige.ch/guides/tie/html/java-JSP/java-jsp.htmlurl: http://tecfa.unige.ch/guides/tie/pdf/files/java-jsp.pdf
uteurs et version• Daniel K. Schneider - Vivian Synteta• Version: 0.1 (modifié le 12/6/00 par VS)
rérequis• Java de base
Module technique précédent: java-intro• Avoir une idée du standard "CGI"
Module technique précédent: cgi-intro
../../html/java-intro/java-intro.htmlhttp://tecfa.unige.ch/guides/tie/html/java-jsp/java-jsp.htmlhttp://tecfa.unige.ch/guides/tie/pdf/files/java-jsp.pdf../../html/cgi-intro/cgi-intro.htmlhttp://tecfa.unige.ch/~paraskev/http://tecfa.unige.ch/tecfa-people/schneider.html
-
Introduction à JSP (Java Server Pages 1.x) - . java-jsp-2
In © TECFA 6/12/00
• Pages actives avec PHP (ou équivalent), conseillé mais pas obligatoire.
As 0.9, déconseillé)
D Syntax cards)
tml
O
Rquest.getParameter)
ternet et Education
Module technique précédent: php-html
utres modulesModule technique suppl.: java-jhtml (anciens Java Server PageModule technique suivant: java-servl
ocumentationurl: http://java.sun.com/products/jsp/syntax.html (Sun JSP• imprimez une carte pour accompagner ces slidesurl: Doc locale: http://tecfa.unige.ch/guides/jsp/pointers.hurl: http://java.sun.com/products/jsp/
bjectifs• Faire des simples pages actives avec JSP• (à faire: utilisation de "Beans")
emerciements:• Yan Bodain, CRIM Formation (correction d’une erreur sur re
../../html/php-html/php-html.html../../html/java-servl/java-servl.html../../html/java-jhtml/act-jhtml.htmlhttp://java.sun.com/products/jsp/syntax.htmlhttp://tecfa.unige.ch/guides/jsp/pointers.htmlhttp://java.sun.com/products/jsp/docs.html
-
Introduction à JSP (Java Server Pages 1.x) - 1. Table des matières détaillée java-jsp-3
In © TECFA 6/12/00
1. Table des matières détaillée34567899
1114151819
ternet et Education
1. Table des matières détaillée2. Introduction à JSP (Page Compilation)
2.1 Ecrire des pages JSP simples2.2 Faire une soupe HTML/Java plus mélangée2.3 Gestion des erreurs
3. Utilisation d’autres classes JAVA4. Traitement de formulaires
4.1 Principe de base du traitement de requêtes4.2 Traitement simple de formulaires4.3 Debugging de paramètres4.4 Vérification de l’input et HTML conditionnel
5. Session tracking6. JSP inside
-
Introduction à JSP (Java Server Pages 1.x) - 2. Introduction à JSP (Java Server Pages) java-jsp-4
In © TECFA 6/12/00
2. Introduction à JSP (Java Server Pages)
PP)
*.jsprtoire du systèmerecompilée
U
beans")
ternet et Education
rincipe de base:• Permet d’écrire des pages hybrides HTML/Java (comme PH• XML tags et scripts en Java:• Compile et exécute la source comme "servlet"• La traduction se fait automatiquement pour tous les fichiers
• le résultat (servlet source et classe) est placée dans un répe• Après chaque update d’un fichier *.jsp la classe servlet est
tilité:• Création de pages "design"• Analyse de formulaires• possibilité d’interfaçage avec des "vrais" servlets• accès à toute classe Java mise à disposition (notamment des "
-
Introduction à JSP (Java Server Pages 1.x) - 2. Introduction à JSP (Java Server Pages) java-jsp-5
In © TECFA 6/12/00
2.1 Ecrire des pages JSP simples
spéciaux
E
);
les "sorties" génère
ternet et Education
• pas besoin d’importer les classes (c’est fait par le serveur!)• Le code Java est délimité dans une page HTML par des tags
• • voir exemple 2-2 “JSP simple (2)” [6]
xemple 2-1: JSP simple (1)
url: Programme: http://tecfa.unige.ch/guides/jsp/ex/demo1.jspurl: Source: http://tecfa.unige.ch/guides/jsp/ex/demo1.jsp.text
JSP Test
• out est un objet "gratuitement" mis à votre disposition pour• Curieux: voir -6. “JSP inside” [19] pour le Java que cette page
http://tecfa.unige.ch/guides/jsp/ex/demo1.jsphttp://tecfa.unige.ch/guides/jsp/ex/demo1.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 2. Introduction à JSP (Java Server Pages) java-jsp-6
In © TECFA 6/12/00
2.2 Faire une soupe HTML/Java plus mélangée
E
D re dans HTML (\")
r " + i);
O
Youppie !
ternet et Education
xemple 2-2: JSP simple (2)
url: Programme: http://tecfa.unige.ch/guides/jsp/ex/demo2.jspurl: Source: http://tecfa.unige.ch/guides/jsp/ex/demo2.jsp.text
ans les sections Java, il faut quoter les " qui doivent apparaîtint emphasize = 5;for (int i = 0; i < size; i++) { out.println (""); if (i == emphasize) out.println (""); out.println(" \"item" + i + ".jsp\" - item numbe if (i == emphasize) out.println ("");}
n peut mélanger variables Java et strings HTML• utiliser le tag (expressions Java)
......
......
http://tecfa.unige.ch/guides/jsp/ex/demo1.jsphttp://tecfa.unige.ch/guides/jsp/ex/demo2.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 2. Introduction à JSP (Java Server Pages) java-jsp-7
In © TECFA 6/12/00
2.3 Gestion des erreursrce page gestion)e avec Erreur)(Source) run-time
P
ng() %>tMessage() %>
rintWriter(out);
P
relatif !!)
ternet et Education
url: http://tecfa.unige.ch/guides/jsp/ex/error.jsp.text (Souurl: http://tecfa.unige.ch/guides/jsp/ex/err-demo.jsp (Pagurl: http://tecfa.unige.ch/guides/jsp/ex/err-demo.jsp.text
• On peut arranger un peu l’affichage des erreurs (exceptions)• Rien à faire pour la compilation :(
age error.jsp
The name of the exception was:
-
Introduction à JSP (Java Server Pages 1.x) - 3. Utilisation d’autres classes JAVA java-jsp-8
In © TECFA 6/12/00
3. Utilisation d’autres classes JAVAirective":
E
i",
i!");
ternet et Education
• Vous pouvez importer toutes les classes Java avec la "page d
xemple 3-1: Dates avec JSP
url: Programme: http://tecfa.unige.ch/guides/jsp/ex/weekday.jspurl: Source: http://tecfa.unige.ch/guides/jsp/ex/weekday.jsp.text
TodayToday
http://tecfa.unige.ch/guides/jsp/ex/weekday.jsphttp://tecfa.unige.ch/guides/jsp/ex/weekday.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-9
In © TECFA 6/12/00
4. Traitement de formulaires
4avax.servlet
e variables, par ex.
t
onse
ST, DELETE et PUT.tHeader.
V
ternet et Education
.1 Principe de base du traitement de requêtes• Les pages JSP peuvent utiliser les fonctionalités de la classe j
(puisqu’elles sont traduites en un servlet).• On a gratuitement à disposition certains objets sous forme d
1. request de la classe javax.servlet.http.HttpServletReques
2. out de la classe javax.servlet.ServletOutputStream
3. response de la classe javax.servlet.http.HttpServletResp• Pour récupérer une variable "formulaire" utiliser: request.getParameter("paramètre")
• paramètre est le nom du paramètre qui vient des GET, PO• request possède d’autres méthodes utiles, par exemple ge
On peut lire un cookie avec request.getHeader("cookie")
oir la servlet doc, par exemple:url: http://tecfa2.unige.ch/guides/java/jsdk2/doc/
http://tecfa2.unige.ch/guides/java/jsdk2/doc/
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-10
In © TECFA 6/12/00
Exemple 4-1: Simple GET Demo.
p?MESSAGE=Hello
ull) {
AGE=Hello");
ternet et Education
url: Programme: http://tecfa.unige.ch/guides/jsp/ex/request1.jspurl: Avec paramètre: http://tecfa.unige.ch/guides/jsp/ex/request1.jsurl: Source: http://tecfa.unige.ch/guides/jsp/ex/request1.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-11
In © TECFA 6/12/00
4.2 Traitement simple de formulaires
E
tml
F
faibles
nte
ternet et Education
xemple 4-2: Simple calcul (Formulaire + JSP)
url: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire.hurl: source jsp: /simple-calcul/calcul.jsp.text
ormulaire HTML:
Quelles sont vos connaissances de HTML ?
moyennesbonnes
Indiquez votre expertise en programmation:absemoyennebonnehttp://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire.htmlhttp://tecfa2.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-12
In © TECFA 6/12/00
J
ce + " ,question b="
seInt(choice2);
ternet et Education
AVA:
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-13
In © TECFA 6/12/00
Explicationse variabletring
en entiers.
P
s]
=10&choice2=15
ternet et Education
• la méthode request.getParameter retourne la valeur d’un• sous forme de string, il faut donc déclarer choice comme S
• la méthode Integer.parseInt("string") traduit un string• nécessaire pour faire une addition dans l’exemple ci-dessu
roblèmes avec cette page• Lorsque l’on appelle directement la page *.jsp elle saute
url: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp• car elle essaye d’additionner des variables qui n’existent pa• voir 4.4 “Vérification de l’input et HTML conditionnel” [15
• Pour les tricheurs, un emploi "GET" de la page:http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp?choice
http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp?choice=10&choice2=15http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-14
In © TECFA 6/12/00
4.3 Debugging de paramètresre HTML
E
html
ransmises
ur chaque param
);ment dans l’ordre):
hasMoreElements();){
+ pVals[i] + " ");
ternet et Education
• Alternative: utiliser "GET" comme methode dans le formulai
xemple 4-3: Lister paramètres et valeurs reçus
url: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire2.url: source jsp: /simple-calcul/calcul2.jsp.text
http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire2.htmlhttp://tecfa2.unige.ch/guides/jsp/ex/simple-calcul/calcul2.jsp.text
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-15
In © TECFA 6/12/00
4.4 Vérification de l’input et HTML conditionnel
V
veur !!
1.2 ?)
transmet rien) !
H
ternet et Education
oir si un paramètre est vide:
1. Champs texte• on regarde s’ils sont vides (string de taille zéro)• un input type "text" (HTML) est donc toujours passé au ser// inputString nomString = req.getParameter("nom");.....if ( nomString.equals("") ) { ... geuler ...}
• Voici une autre méthode sans utiliser emptyString (JDK < if ( nomString.compareTo("") == 0)
2. Widgets de type "radio" etc.• on regarde si l’objet est présent ou absent (le formulaire ne• si "choix" n’a pas été transmis, getParameter retourne nullString Choix = req.getParameter("choix");....if (Choix == null) { .... geuler .... }
TML conditionnel• On peut afficher conditionellement du HTML• Attention: si problèmes, utilise out.print(" ...") à la place
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-16
In © TECFA 6/12/00
Exemple 4-4: Un simple test avec JSP (vérification et calcul des résultats)
l
tml>");
tml">refaire SVP
oublié qc
ternet et Education
url: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/form-test.htmurl: source jsp: /simple-calcul/calcul-test.jsp.textif (request.getMethod().equals("GET")) { out.println("sorry you can’t"); out.print("
Sorry on ne répond pas aux anons,
-
Introduction à JSP (Java Server Pages 1.x) - 4. Traitement de formulaires java-jsp-17
In © TECFA 6/12/00
Exemple 4-5: Simple calcul en une seule page JSP
spsp.textne page...pour le formulaire et
at!">tat et finir!">
ster la méthode, voir
ternet et Education
url: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire2.jurl: http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/formulaire2.j• L’ exemple 4-2 “Simple calcul (Formulaire + JSP)” [11] en u
• En règle générale il semble plus simple d’utiliser 2 pages: uneune autre pour le traitement.
if ((process != null) || (process2 !=null)) { ... montrer les résultatsif (process2 != null) { ... afficher un merci} else { ... dire que l’on peut essayer de nouveau}if (process2 == null) {%> ... afficher le formulaire
-
Introduction à JSP (Java Server Pages 1.x) - 5. Session tracking java-jsp-18
In © TECFA 6/12/00
5. Session tracking
E
xt
ntest.counter");
"
");>source
E
ext
ternet et Education
xemple 5-1: Session tracking I
url: http://tecfa.unige.ch/guides/jsp/ex/session/session-track.jspurl: http://tecfa.unige.ch/guides/jsp/ex/session/session-track.jsp.te
-
Introduction à JSP (Java Server Pages 1.x) - 6. JSP inside java-jsp-19
In © TECFA 6/12/00
6. JSP inside
er les pages JSP. Parur comprendre des
M
k/localhost_8080/
2ejspdemo1_jsp_0.
oir méthode
e la classe dès que le
ternet et Education
• Section à option (à ce stade)Il n’est pas nécessaire de comprende le code java produit pour utiliscontre il est utile de savoir lire une telle page approximativement pomessages d’erreur
écanisme• Le server Java met les fichiers *.java et *.class générés
dans le répertoire tecfa:/usr/local/jakarta/tomcat/wor• Pour chaque page JSP, un "servlet" est créé, par exemple:• _0002fguides_0002fjsp_0002fex_0002fdemo_00031_000java
• il s’agit d’une sous-classe de HttpServlet• Une seule méthode "service" est crée
• elle incorpore les instructions java dans la page JSP• elle "copie" plus ou moins "tel quel" les commandes html (v
writeBytes)• Les classes *.webserver.pagecompile assurent la mise à jour d
code source *.jsp change.
-
Introduction à JSP (Java Server Pages 1.x) - 6. JSP inside java-jsp-20
In © TECFA 6/12/00
Sécurité
ur cela.
E 5]iiii
p JspPageImpl{
jsp/ex/demo1.jsp" }; esponse,
ternet et Education
• Les servlets générés par JSP sont "sandboxed":• pas d’accès aux fichiers et autres ressources locales• (Sauf si je me trompe) il faut soit écrire des vrais servlets po
xemple 6-1: Java généré pour l’exemple 2-1 “JSP simple (1)” [mport java.io.IOException;mport javax.servlet.*;mport javax.servlet.http.*;mport javax.servlet.jsp.*;
ublic class jsp__guides__jsp__ex__demo1_2ejsp extends org.gjt.jsp.Http
public final long _gnujspGetTimestamp() { return 948897919123L; } private static final String[] _gnujspDeps = new String[] { "/guides/ public final String[] _gnujspGetDeps() { return _gnujspDeps; } public final long _gnujspGetCompilerVersion() { return 1999101701L; } public void _jspService (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType ("text/html"); JspFactory factory = JspFactory.getDefaultFactory (); PageContext pageContext = factory.getPageContext (this,request,r
-
Introduction à JSP (Java Server Pages 1.x) - 6. JSP inside java-jsp-21
In © TECFA 6/12/00
null,true, 8192, true); HttpSession session = pageContext.getSession (); ervletContext();
/o TML>\ by: D. n\n <//
/o F=' DDRES
}
ternet et Education
ServletContext application = pageContext.getServletConfig().getS JspWriter out = pageContext.getOut (); ServletConfig config = pageContext.getServletConfig(); Object page = this;
try {
/ line:/guides/jsp/ex/demo1.jsp:1ut.print ("\n\n\HEAD>\n \n JSP Test\n\n\n\n ");/ line:/guides/jsp/ex/demo1.jsp:16
for (int i = 0; i < 5; i++) out.println ("" + i);
/ line:/guides/jsp/ex/demo1.jsp:18ut.print ("\n\n\n\n \n
-
Introduction à JSP (Java Server Pages 1.x) - 6. JSP inside java-jsp-22
In © TECFA 6/12/00
ternet et Education
Introduction à JSP (Java Server Pages 1.x)1. Table des matières détaillée2. Introduction à JSP (Java Server Pages)2.1 Ecrire des pages JSP simples2.2 Faire une soupe HTML/Java plus mélangée2.3 Gestion des erreurs
3. Utilisation d’autres classes JAVA4. Traitement de formulaires4.1 Principe de base du traitement de requêtes4.2 Traitement simple de formulaires4.3 Debugging de paramètres4.4 Vérification de l’input et HTML conditionnel
5. Session tracking6. JSP inside