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 et salle de jeux


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut jsp et salle de jeux
    Bonjour à tous,

    Voilà je programme un jeux en ligne en java et jsp avec tomcat. Je dois avoir 5 salles de jeux qui tourne dès le démarrage du serveur tomcat. Je sais qu'il faut utiliser l'interface ServletContextListener mais je ne sais pas trop comment.

    En effet, pour le jeux je dois remplir cette salle de jeux avec des utilisateurs qui quand ils se connecteront créerons leur objet Joueur et rentrerons dans une salle.

    Mon soucis est donc de démarrer la classe Salle_de_jeux qui possède un main et de récupérer les informations de ces objets quand un utilisateur se connecte.

    Merci pour votre futur aide!!!!!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Effectivement, tu peux utiliser l'interface ServletContextListener plus particulièrement la méthode contextInitialized(...) pour créer ta salle.
    Une fois la classe instanciée, il suffit de la placer dans ce contexte sous un nom donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void contextInitialized(ServletContextEvent sce)
    {
        SalleDeJeux salle = new SalleDeJeux(...);
        ...
        sce.getServletContext().setAttribute("nom", salle);
    }
    Pour la récupération de cette classe, tout dépend depuis où :
    - par une servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getSession().getServletContext().getAttribute("nom");
    - par une JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.getAttribute("nom");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Tout d'abord merci pour ton aide.

    J'ai toujours des petits soucis.

    j'ai rajouté dans le fichier web.xml de mon serveur tomcat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <listener>
      <listener-class>classe.Salle_de_jeux</listener-class>
    </listener>
    Dans la classe Salle_de_jeux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void contextInitialized(ServletContextEvent ace){
     
        Salle_de_jeux salle1=new Salle_de_jeux();
        ace.getServletContext().setAttribute("salle",salle1);
     
    }
    Et dans la jsp seulement pour tester que je recupere bien la classe j'ai mis un attribut int j à 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <% 
     
    Salle_de_jeux salle=(Salle_de_jeux)application.getAttribute("salle");
     
    out.println(salle.j);
    %>

    Est ce que tout cela est bon?

    Je poste l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    17 mars 2010 14:14:50 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    java.lang.NullPointerException
        at org.apache.jsp.index_jsp._jspService(index_jsp.java:97)
    .......

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le web.xml ?

    (Utilise la balise [ code ], bouton # de l'éditeur, cf règles du forum, merci)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Voilà le web.xml de mon serveur tomcat:
    (j'ai mis que la fin sinon il est trop long et c'est le même présent dans tomcat6)

    Merci pour ton aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
     
        <listener>
          <listener-class>Salle_de_jeux</listener-class>
        </listener>
     
     
    </web-app>

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer la classe Salle_de_jeux (en entier) ?

    (C'est elle qui implémente ServletContextListener ?)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Voilà:

    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
    package classe;
     
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.*;
     
    public class Salle_de_jeux implements ServletContextListener{ 
     
    	public Table tables[];
    	public int j;
     
    Salle_de_jeux()
    {
    	tables=new Table[5];
    	j=3;
    }
     
    public void contextInitialized(ServletContextEvent ace){
     
    	Salle_de_jeux salle1=new Salle_de_jeux();
     
    	ace.getServletContext().setAttribute("salle",salle1);
     
    }
     
    public void contextDestroyed(ServletContextEvent ace){
     
    }
    }

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est un peu ce que je craignais...
    Il faudrait faire une classe à part (par exemple "ApplicationLoader") pour l'implémentation de ServletContextListener, ça responsabilité est d'initialiser des objets pour l'application.
    La responsabilité de Salle_de_jeux est toute autre...

    Autre chose, ta classe est dans un package, il faut préciser le package dans le web.xml (1 coup tu l'as mis, l'autre non).

    Pour le reste, inchangé...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Voilà je vien de faire ce que tu m'as dit

    j'ai créer dans eclipse la nouvelle classe ApplicationLoader que j'ai mis dans le package par défaut:
    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
     
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
     
    import classe.Salle_de_jeux;
     
    public class ApplicationLoader implements ServletContextListener {
     
    	@Override
    	public void contextDestroyed(ServletContextEvent arg0) {
    		// TODO Auto-generated method stub
    		Salle_de_jeux salle1=new Salle_de_jeux();
     
    		arg0.getServletContext().setAttribute("salle1",salle1);
    	}
     
    	@Override
    	public void contextInitialized(ServletContextEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    }
    et comme je l'ai mis dans le package par défaut, j'ai pas modifier le web.xml.

    Comme ca n'a pas marche je l'ai mis dans mon package classe et je l'ai précisé dans le web.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <listener>
          <listener-class>classe.ApplicationLoader</listener-class>
        </listener>

    Mais ça ne marche toujours pas l'objet Salle_de_jeux n'est pas créé

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    As-tu modifié la JSP pour demander "salle1" ?

    C'est sous ce nom que tu l'as enregistré, pas "salle"...

    Sinon, il faut toujours mettre les classes dans un package (même si ce n'est pas obligatoire au sens "java"), c'est la meilleure pratique...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Oui, dans la jsp j'ai bine mis la bonne variable.

    J'ai attaché la capture d'écran de mon projet eclipse.

    J'espère que ça peut t'aider à m'aider lol.
    Images attachées Images attachées  

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Dans le principe, c'est pourtant comme ça... il doit y avoir autre chose...
    Peut-être l'initialisation de ta classe qui ne va pas...
    Tu n'as rien dans la console au démarrage du serveur ?
    Le plus simple serait de mettre un point d'arrêt dans le listener et de suivre...

    J'ai fait le test et ça fonctionne, tu peux récupérer le war et l'installer...
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Cela ne marche pas, voilà l'erreur:


    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
    18 mars 2010 11:07:40 org.apache.catalina.core.StandardContext listenerStart
    GRAVE: Erreur lors de la configuration de la classe d'écoute de l'application (application listener) ApplicationLoader
    java.lang.ClassNotFoundException: ApplicationLoader
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3915)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    	at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:616)
    	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    18 mars 2010 11:07:40 org.apache.catalina.core.StandardContext listenerStart
    GRAVE: L'installation des écouteurs (listeners) de l'application a été sautée suite aux erreurs précédentes
    18 mars 2010 11:07:40 org.apache.catalina.core.StandardContext start
    GRAVE: Error listenerStart
    18 mars 2010 11:07:40 org.apache.catalina.core.StandardContext start
    GRAVE: Erreur de démarrage du contexte [/trivial] suite aux erreurs précédentes

    J'ai juste rajouter un new package dans mon projet test j'ai mis tes deux classes g modifier mon index.jsp et le fichier web.xml comme le tien et cela ne marche toujours pas. snif

    Et là j'ai carrément erreur HTTP 404

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Juste une question rapidement, il y a beaucoup de fichier web.xml

    -dans ...workspace/Servers
    -dans ...workspace/trivial/WebContent/WEB-INF
    -dans ...TOMCAT.../conf/web.xml


    C'est lequel que je dois modifiier avec la balise <listener>?

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Celui que tu as dans ton projet...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    J'ai réussi à le faire marcher, ça crée donc l'objet mais ça ne récupère pas la valeur de l'attribut j de mon objet Salle_de_jeux


    Voila dans ma page jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Valeur de démarrage : <%=application.getAttribute("salle1.j")%>

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur de démarrage : <%=application.getAttribute("salle1").j%>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Développement jeux vidéo : quelles bases à avoir absolument ?
    Par Ezechiel dans le forum Développement 2D, 3D et Jeux
    Réponses: 175
    Dernier message: 20/02/2018, 16h14
  2. gestion d'une salle de jeux
    Par Belooh dans le forum ALM
    Réponses: 3
    Dernier message: 03/11/2014, 10h17
  3. [JSP/Servlet] Outils pour developper?
    Par BenoitM dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2004, 11h03
  4. jeux de caractères
    Par AHO dans le forum InterBase
    Réponses: 11
    Dernier message: 05/02/2003, 18h45
  5. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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