New Introduction à JSP (Java Server Pages 1.x) java-jsp Introduction … · 2000. 12. 6. ·...

22
Introduction à JSP (Java Server Pages 1.x) java-jsp Internet et Education © TECFA 6/12/00 Introduction à JSP (Java Server Pages 1.x) Code: java-jsp Originaux url: http://tecfa.unige.ch/guides/tie/html/java-JSP/java-jsp.html url: http://tecfa.unige.ch/guides/tie/pdf/files/java-jsp.pdf Auteurs et version Daniel K. Schneider - Vivian Synteta • Version: 0.1 (modifié le 12/6/00 par VS) Pré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

Transcript of New Introduction à JSP (Java Server Pages 1.x) java-jsp Introduction … · 2000. 12. 6. ·...

  • 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:absemoyennebonne

    http://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