IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Jsp : appeler une classe java


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut Jsp : appeler une classe java
    Bonjour,
    Je voudrais appelé une fonction java dans un fichier jsp mais je reçois ses messages d'erreurs.

    Mon fichier java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package packageTraitement;
     
    public class Test {
     
        public String bonjour ()
        {
            return "Bonjour" ;
        }
     
    }
    Mon fichier Jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <%@
    Test test = new Test();
    System.out.println(test.bonjour());
    %>
    Le message d'erreur de tomCat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Etat HTTP 500 - /Annuaire.jsp (line: 47, column: 0) Directive incorrecte 
    type Rapport d''exception 
    message /Annuaire.jsp (line: 47, column: 0) Directive incorrecte
     
    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.
     
    exception
    org.apache.jasper.JasperException: /Annuaire.jsp (line: 47, column: 0) Directive incorrecte
        org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
        org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
        org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
        org.apache.jasper.compiler.Parser.parseDirective(Parser.java:498)
        org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1762)
        org.apache.jasper.compiler.Parser.parse(Parser.java:135)
        org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
        org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:119)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    Le message d'erreur d'eclipse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    GRAVE: Servlet.service() for servlet [jsp] in context with path [/Annuaire] threw exception [/Annuaire.jsp (line: 47, column: 0) Directive incorrecte] with root cause
    org.apache.jasper.JasperException: /Annuaire.jsp (line: 47, column: 0) Directive incorrecte
        at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
        at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
        at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
        at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:498)
        at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1762)
        at org.apache.jasper.compiler.Parser.parse(Parser.java:135)
        at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
        at org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:119)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@page import="packageTraitement.Test" %>
    Il manque un espace entre le @ et le page

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    j'ai toujours les message d'erreurs il me dise qu'il y a une erreur ici
    Test test = new Test(); dans le fichier jsp

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Enlève l'arobase (@) dans cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%@
    Test test = new Test();
    System.out.println(test.bonjour());
    %>
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    ca fonction tres bien .
    Comment pourrais-je faire pour qu'au lieu "bonjour" soit afficher dans la console, il soit affiché sur une page web ?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    A la base, une jsp c'est un fichier texte qui contient directement des balises html, plus d'autres balises :

    • les balises de jsp (les <%@ %>, <% %> et <%= %>
    • d'autres balises dites de taglib, dont certaines standard (comme celle de JSTL), et que tu auras l'occasion peut-être de voir plus tard


    Donc le moyen le plus simple d'écrire bonjour est de le mettre directement dans le texte de la jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <body>
    <p>
    Bonjour
    </p>
    </body>
    </html>
    En réalité le texte que tu tapes dans la JSP n'est pas directement envoyé en réponse de la requête : il est convertit en une classe Java qui écrit dans un flux de texte qui sera renvoyé par une servlet.

    En suite la basise <%= %> permet d'écrire directement dans le flux texte en question une expression évaliable, quelle soit une valeur constante (comme "Bonjour", ou 42), ou une variable, le retour d'un appel de méthode, ou une expressioncalculée, ce qui donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <body>
    <p>
    <%= "Bonjour" %>
    </p>
    </body>
    </html>
    On peut également écrire dans le flux en Java, en utilisant la variable out, qui fonctionne comme le out de System.out. On peut écrire donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <body>
    <p>
    <% out.print("Bonjour"); %>
    </p>
    </body>
    </html>
    Donc pour écrire le retour de ta méthode, on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <body>
    <p>
    <% Test test = new Test();
    out.println(test.bonjour()); %>
    </p>
    </body>
    </html>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
     
    <%@page import="packageTraitement.Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <body>
    <p>
    <% Test test = new Test(); %>
    <%= test.bonjour() %>
    </p>
    </body>
    </html>
    NB on peut se permettre aujourd'hui d'omettre les balises html de base comme <html>, <body>, <p> pour écrire directement Bonjour, parce que les navigateurs modernes sont capables de remettre certaines balises qui manquent. Personnellement, je préfère être rigoureux et les mettre explicement. Je te conseille de prendre l'habitude de faire la même chose, comme ça quand tu feras des pages plus complexes avec pleins de div, et autres balises, tu n'auras pas de surprise dues à ces remplacements automatiques faits par les navigateurs.

    Pour la suite, je t'invite à regarder un tutoriel comme :

    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,
    Et comment pourrais-je faire pour afficher le contenu d'un fichier xml sur la page web ?
    J'ai un fichier java avec Jdom qui affiche le contenu du fichier xml avec plein de system.out.print , est ce que je peux faire en sorte de d'afficher sur la page web ?

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    J'ai dit :
    Citation Envoyé par joel.drigo Voir le message
    On peut également écrire dans le flux en Java, en utilisant la variable out, qui fonctionne comme le out de System.out.
    Ça ne t'interpelle pas ? On peut donc écrire dans une jsp exactement comme on le fait avec System.out. Mais attention : quand on écrit dans le out d'une jsp on écrit dans un flux qui sera interprété par le navigateur conformément au contentTyoe qu'on indique (text/html dans la balise <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> dans ton cas).

    Si on veut générer une page qui est du xml, on peut changer ce contentType en text/xml, et écrire dans le out.

    La variable out dans une JSP est du type javax.servlet.jsp.JspWriter, une classe qui étend java.io.Writer. La méthode output() de XmlOutputter de JDOM existe pour un Writer.

    Donc on peut sérialiser vers le out d'une JSP directement (sans passer par un parcourt d'arbre et et des System.out.println() ou out.println().

    Certains navigateur peuvent affichier un xml sous forme d'un xml (comme ie), mais ce n'est obligatoire.

    L'autre solution est d'écrire dans le flux html (donc avec un contentType text/html), un xml qui ne sera pas interprété comme tel, mais comme du texte dans du html. Pour cela, il faut échapper les caractères xml, en particulier les < et >, respectivement en &lt; et &gt;, afin que les balises xml ne soient pas interprétées comme des balises xml mais comme du texte html.

    Par exemple, si dans ton code tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("<" + element.getName() + ">");
    tu écris à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.println("&lt;" + element.getName() + "&gt;");
    L'autre solution, plus simple, et qui permet d'utiliser le XmlOutputter est d'écrire dans une chaine, par exemple en écrivant vers un StringWriter, et de remplacer tous les caractères "<" et "> par un replaceAll().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment appeler une classe java dans une page jsp?
    Par limalima dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/11/2008, 22h59
  2. passer des arguments d'une JSP a une classe Java
    Par midou84 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 02/04/2008, 10h58
  3. [2.2.1.1][JavaScript] Appel à une classe java
    Par bert1525 dans le forum BIRT
    Réponses: 2
    Dernier message: 17/12/2007, 09h18
  4. Réponses: 11
    Dernier message: 30/08/2007, 17h20
  5. [JSP] Utiliser une classe Java dans du Javascript
    Par BiM dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/07/2007, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo