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 :

importer une class java dans page jsp


Sujet :

Servlets/JSP Java

  1. #1
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut importer une class java dans page jsp
    Bonjour,

    J'ai un fichier .class que je souhaite importer dans une page jsp. Je sais qu'il faut utiliser <%@ page import= ....> mais après je ne sais pas comment le mettre en oeuvre ! ceci dans le but d'appeler une méthode de cette classe lors de l'envoi d'un formulaire.

    Merci

  2. #2
    Membre éclairé Avatar de adil_vpb
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 326
    Par défaut
    bonjour,
    par exemple t'as le package com.pconnection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class connection {
    String err="non erreur";
        public String GetErr(){ //return des erreurs !
        return err; 
        }
    }
    et sur ta pag jsp tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*,com.pconnection.*, java.util.* "%>
    com.pconnection c'est le package qui regroupe tes classes, et qui se trouve dans WEB-INF/classes si tu travaille sous Tomcat,
    apres dans le scriptling de ta page jsp tu met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%
    connection con=new connection();
    out.println(con.GetErr());
    %>
    et ca doit marché !!!

  3. #3
    Membre éclairé Avatar de adil_vpb
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 326
    Par défaut
    regarde comme même dans le forum :
    ce type de question est déjà posé :
    http://www.developpez.net/forums/sho...d.php?t=280466

    si j'ai bien compris, c'est presque ce qui tu cherches !


  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut
    Pour ma part, j'utilise Struts la plupart du temps donc ce genre de pb ne se pose pas. De plus, je ne suis pas certain que l'on puisse assimiler une méthode à un évènement directement dans ta page *.jsp !

    sinon, si ton *.class est bien dans le répertoire WEB-INF/classes (ac tous ces packages), pas nécessairement besoin de l'importer. Fais y appelle en nommant tes packages (ex : package.MaClasse). Pour note, qd je fais ça, c'est que mes .class sont bien rangés ou que le *.jar du projet initial où se trouve la classe en question est bien dans WEB-INF/lib

  5. #5
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut
    re,

    tout d'abord merci, mais je comprend toujours mal.

    On me livre le dossier "WEB-INF" de Tomcat qui comporte un sous dossier "classes" avec le fichier.class dedans et qui comporte le fichier web.xml.
    j'ai une methode on l'appelera "Methode" issu du fichier.java et il faut que j'y fasse appel par une page JSP. Je pense deja avoir été plus clair et je n'ai vraiment que ca sous le coude pour faire fonctionne la servlet depuis JSP.

    Que faire exactement dans la page JSP? et ou faut il la placer par rapport au repertoire WEB-INF?

    merci

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Faudrait nous en dire plus sur ta classe java.
    La méthode renvoie-t'elle un objet ?
    Que veux-tu afficher dans la jsp ?
    Avec un peu de code, je pense qu'on t'aidera plus facilement.

  7. #7
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Est ce que tu sais si la classe dont tu parle est une servlet ..
    sans ce cas :
    tu suis le chemin de ton fichier .class dans le répertoire classes sous WEB-INF
    Tu ouvres ensuite le fichier web.xml et tu essaies de trouver le même chemin dans les balises <servlet>
    Un fois le nom de ta servlet repéré ( balise <servlet-name> ) tu cherche dans le même fichier cette entrée dans les balises <servlet-mapping> et tu récupère le chemin url-mapping...

    C'est ce chemin que tu appelleras dans ta jsp .. normalement dans l'attribut action de ton formulaire ..

  8. #8
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    sinon ton import se fait tout simplement de la manière suivante dans la jsp :

    <%@ page import="..arborescence....MaClasse" %>

    où arborescence correspond au chemin de ta classe dans WEB-INF/classes
    exemple com.mesclasses.classe..

    ATTENTION : tu ne peux pas placer ton point class où tu veux car le package a dû être spécifié lors de la création de la classe..tu dois suivre cette même arborescence..

    il suffit ensuite de faire :

    <%
    Maclasse M = new Maclasse();
    M.mamethode();
    %>

  9. #9
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut
    Voila j'ai un repertoire "test" composé de ceci :



    Mon fichier class contient une seule méthode à laquelle je voudrais faire appel.
    Deja est ce que mes fichiers sont bien placés, en manquent ils etc.. ?

    dans le web.xml j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     <servlet>
            <servlet-name>MaClasse</servlet-name>
            <servlet-class>MaClasse</servlet-class>
        </servlet>
     
    <servlet-mapping>
            <servlet-name>MaClasse</servlet-name>
            <url-pattern>/MaClasse</url-pattern>
        </servlet-mapping>
    Quel est donc le chemin exact que je dois mettre dans "page import=" du fichier Monfichier.jsp ?


    merci

  10. #10
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu as défini ta classe dans le web.xml comme une servlet.
    Est-ce vraiment une servlet ? hérite-t'elle de HttpServlet ?

    Si ce n'est pas le cas, il ne faut pas la définir dans le web.xml.

    De plus, il faut mettre ta classe dans un package et coder la directive page comme ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="tonPackage.MaClasse" %>

  11. #11
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut
    Citation Envoyé par c_nvy
    Tu as défini ta classe dans le web.xml comme une servlet.
    Est-ce vraiment une servlet ? hérite-t'elle de HttpServlet ?

    Si ce n'est pas le cas, il ne faut pas la définir dans le web.xml.

    De plus, il faut mettre ta classe dans un package et coder la directive page comme ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="tonPackage.MaClasse" %>

    oui c'est vraiment une servlet donc c'est bon.

    "Il faut mettre ta classe dans un package" => c'est à dire ? indiquer "package test;" par exemple dans le .java et recompiler ?

    puis ensuite mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="test.MaClasse" %>
    c'est bien ça?

    si oui j'essairais.

    merci

  12. #12
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Oui c'est exactement ca pour la declaration d'un package.
    l'import est correct aussi.

  13. #13
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut nous somme ici pour partager le savoir
    vous pouvez voir les tuto de Michel Baron ds developpez.com sur les jsp

  14. #14
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut
    merci l'importation fonctionne.. maintenant niveau utilisation ça ne parait pas évident pour un débutant dans la matiere comme moi ..

    voici le formulaire html :

    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
    <form name="form1" method="post" action="reponse.jsp">
            <table width="550" border="0" align="center" cellpadding="3" cellspacing="1" style="border: 1px solid #3399FF;">
     
            <tr>
                <td width="25%"><p>&nbsp;Catégorie :</p> </td>
     
                <td width="75%"><select name="categorie">
                  <option value="0" selected>Choisissez une catégorie</option>
                  <option value="1" >Teacher</option>
                  <option value="2" >Student</option>
    			  <option value="3" >Staff</option>
    			  <option value="4" >Admin</option>
                </select></td>
              </tr>
     
    		  <tr>
                <td><p>&nbsp;Nom d'utilisateur :</p></td>
                <td><input name="nomutilisateur" size="20" maxlength="40" type="text" value="">
    			<input type="submit" value="OK">
                </td>
              </tr>
    et la servlet :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    package argos;
     
    import java.io.IOException;
    import java.io.PrintWriter;
     
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import java.util.*;
    import java.util.Hashtable;
    import java.util.Enumeration;
     
    import javax.naming.*;
    import javax.naming.directory.*;
     
    public class MoteurRecherche extends HttpServlet {
    private String ListeNoms;
     
        public String[] ChercherNom(String nom,String categorie) 
        {
     
            String ListeNoms[] = null;
            String Fournisseur = "com.sun.jndi.ldap.LdapCtxFactory" ;
            String Hote = "ldap://172.16.1.1:389";
            String base = "dc=personnes,dc=ac-bordeaux,dc=fr";
            String rechbase;
            Hashtable env = new Hashtable( ) ;
            env.put(Context.INITIAL_CONTEXT_FACTORY, Fournisseur) ;
            env.put(Context.PROVIDER_URL , Hote);
            try {
                DirContext ctx = new InitialDirContext(env) ;
                SearchControls constraints = new SearchControls();
                constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
                rechbase = "eduPersonAffiliation="+ categorie +"," + base;
     
                NamingEnumeration results = ctx.search(rechbase, "*"+nom+"*",constraints);
                //Affichage des attributs
                while (results != null && results.hasMore())
                {
                    SearchResult entry = (SearchResult)results.next();
                    //Affichage du DN
     
                    Attributes attrs = entry.getAttributes();
                    if (attrs == null)
                    {
                        //afficher erreur première ligne du tableau
                    }
                    else {
                        //Affichage de chaque attribut
                        for (NamingEnumeration attEnum = attrs.getAll(); attEnum.hasMoreElements();)
                        {
                            Attribute attr = (Attribute)attEnum.next();
                            String attrId = attr.getID();
                            //Afficher les valeurs de l'attribut
                            Enumeration vals;
                            int i = 0;
                            //ICI IL FAUT METTRE DANS UN TABLEAU LES BONS ATTRIBUTS !
                            for (vals = attr.getAll();vals.hasMoreElements(); )
                            {
                               // out.println("<p><strong>"+ attrId + "</strong>: " + vals.nextElement() + "</p>");
                                if (attrId == "cn")
                                      ListeNoms[i++] = (String) vals.nextElement();
     
                            }
                        }
                    }
                }
     
            }
            catch (javax.naming.NamingException e){
                e.printStackTrace();
            }
            return ListeNoms;
        }
    }
    cette servlet retourne une liste de noms qu'il faut récupérer en JSP donc j'essai par un fichier reponse.jsp

    J'ai lu qu'il fallait utiliser les java beans pour cela

    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="mybean" scope="session" class="argos.MoteurRecherche" />
    ici il faut donc pouvoir utiliser la méthode "ChercherNom" pour que la liste nous soit retournée.

    Une idée du comment faire?

    Merci

  15. #15
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Alors, tout d'abord, ta classe MoteurRecherche n'a rien d'une servlet.
    Donc, il n'est pas utile de la faire hériter de HttpServlet.
    Ajoute-lui un constructeur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public MoteurRecherche()
    {}
    Ensuite, tu crées une servlet qui va te permettre de récupérer le nom et la catégorie sélectée, de faire appel à la méthode ChercherNom de MoteurRecherche et de mettre la liste des noms dans le scope request comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class TaServlet extends HttpServlet {
     
    public void service (HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException
    {
    	String nom= req.getParameter("nomutilisateur") ;
    	String categorie= req.getParameter("categorie") ;
    	MoteurRecherche moteurRecherche = new MoteurRecherche();
    	String[] listeNoms = moteurRecherche.ChercherNom(nom,categorie);
    	req.setAttribute("listeNoms",listeNoms);
    	RequestDispatcher disp=getServletContext().getRequestDispatcher("/reponse.jsp");
    	disp.forward(req,resp) ;
    }
    }
    Ne pas oublier de définir le mapping de cette servlet dans le web.xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     <servlet>
            <servlet-name>TaServlet</servlet-name>
            <servlet-class>tonPackage.TaServlet</servlet-class>
        </servlet>
     
    <servlet-mapping>
            <servlet-name>TaServlet</servlet-name>
            <url-pattern>/TaServlet</url-pattern>
        </servlet-mapping>
    Ensuite, dans ta première jsp, dans l'attribut action de la balise form, tu codes le nom de la servlet comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="form1" method="post" action="<%=request.getContextPath()+"/TaServlet"%>">
    Elle sera donc appelée au submit du formulaire.

    Et dans reponse.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <jsp:useBean id="listeNoms" scope="request" type="java.lang.String[]"/>
    <%
            for (int i=0; i<listeNoms.length;i++)
            {
                    String nom=listeNoms[i] ;
    %>
    	<p><%=nom%></p>
    <%
            }
    %>
    en espérant n'avoir rien oublié et n'avoir pas fait d'erreurs dans le code posté car non testé.

Discussions similaires

  1. probleme d'affichage d'une applet java dans page jsp
    Par wafabrj dans le forum Applets
    Réponses: 1
    Dernier message: 31/10/2012, 20h54
  2. importer une classe java dans une page jsp
    Par chafik_si3 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/03/2009, 15h51
  3. inclure une class java dans page jsp
    Par psycho_xn dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/06/2007, 17h11
  4. appel d'une classe java dans un jsp
    Par kanzarih dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 01/03/2007, 13h06
  5. reconnaissance d'une class java dans 1 jsp
    Par launas dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 24/08/2006, 17h39

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