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

Struts 1 Java Discussion :

[Struts 1.2.4] probleme de connexion a une base de donnees MySQL


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut [Struts 1.2.4] probleme de connexion a une base de donnees MySQL
    salut tout le monde,

    je n'arrive pas a afficher la page jsp récupérant le resultat d'une selection de ma BD.

    voila ma configuration du fichier struts-config.xml (juste ce qu'il faut et non pas tout le fichier:
    Code xml : 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
    	<data-sources> 
    		<data-source type="org.apache.commons.dbcp.BasicDataSource">
    			<set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> 
    			<set-property property="url" value="jdbc:mysql://localhost/dbStruts" /> 
    			<set-property property="username" value="strutsuser" /> 
    			<set-property property="password" value="strutsuser" /> 
    			<set-property property="maxActive" value="10" /> 
    			<set-property property="maxWait" value="1000" /> 
    			<set-property property="defaultAutoCommit" value="false" />
    			<set-property property="defaultReadOnly" value="false" />
    			<set-property property="validationQuery" value="SELECT COUNT(*) FROM user" />
    		</data-source>
    	</data-sources>
     
    	<action-mappings>	
     
    		<action path="/listes" type="expose.struts.action.ListUserAction"> 
    			<forward name="erreurs" path="/erreurs.do" />
    			<forward name="listes" path="/liste.do" />
    		</action>
    </action-mappings>

    et voila l'action qui se connecte a la base de donnees :
    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
    public class ListUserAction extends Action
    {
    	public ActionForward execute(ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response) throws Exception
    	{
    		ActionErrors erreurs = new ActionErrors();
    		DataSource dataSource;
    		Connection con = null;
    		Statement stmt = null;
    		ResultSet rs = null;
     
    	    String select = "SELECT mail,psw,sexe,ville FROM user ORDER BY mail";
    		ArrayList<User> Userlist = new ArrayList<User>();
    		try 
    		{
     
    			dataSource = getDataSource(request);
    			//dataSource = getDataSource(request,"nomDataSource");
    			con  = dataSource.getConnection();
     
    			if (dataSource == null)
    			{ 
    			      erreurs.add( "dbstruts", new ActionMessage("errors.dbStruts") ); 
    			      return mapping.findForward("erreurs"); 
    			}
     
    			stmt = con.createStatement();
    			rs = stmt.executeQuery(select);
    			while (rs.next()) 
    			{ 
    		        Userlist.add( new User( rs.getString("mail"), rs.getString("psw"), rs.getString("sexe"), rs.getString("ville")) );
    			}
    		}
    		catch (SQLException sqle) 
    		{
    		    getServlet().log("Connection.process", sqle);
    		} 
    		finally 
    		{
    			rs.close();
    			stmt.close();
    			con.close();
    		}
    		request.setAttribute("userlist", Userlist);
    		return mapping.findForward("listes");
     
    	}
     
    }
    et la page d'affichage listes.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          <table> 
                <logic:iterate id="userRow" name="userlist">
                <tr> 
                	<logic:iterate id="userCol" name="userRow">
                    	<td ><bean:write name="userCol"></td> 
                    </logic:iterate>
                </tr> 
                </logic:iterate>
            </table>
    a partir d 'un lien de la page index.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/listes.do">Afficher la liste des utilisateurs</html:link>
    quand je clique sur le lien j'obtiens cette erreur :
    javax.servlet.ServletException: "Servlet.init()" pour la servlet action a g�n�r� une exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)

    cause m�re

    java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    java.lang.Class.getConstructor0(Unknown Source)
    java.lang.Class.newInstance0(Unknown Source)
    java.lang.Class.newInstance(Unknown Source)
    org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:145)
    org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:775)
    org.apache.struts.action.ActionServlet.init(ActionServlet.java:331)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)

    cause m�re

    java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    java.lang.ClassLoader.loadClassInternal(Unknown Source)
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    java.lang.Class.getConstructor0(Unknown Source)
    java.lang.Class.newInstance0(Unknown Source)
    java.lang.Class.newInstance(Unknown Source)
    org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:145)
    org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:775)
    org.apache.struts.action.ActionServlet.init(ActionServlet.java:331)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)
    et quand j'enleve la <data-sources>...

    j'obtiens ce message
    javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    cause m�re

    java.lang.NullPointerException
    expose.struts.action.ListUserAction.execute(ListUserAction.java:61)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    je pense que l'erreur vienne du <data-sources>,
    est-ce qu'il manque des fichiers .jar à ajouter dans le dossier /WEB-INF/lib ?
    et lesquels ?
    Voici les jars dans mon dossier lib :

    commons-beanutils.jar
    commons-collections.jar
    commons-digester.jar
    commons-logging.jar
    struts.jar
    commons-validator.jar
    jakarta-oro.jar
    mysql-connector-java-5.1.6-bin.jar
    sinon comment faire pour me connecter directement a une base de donnees Mysql via struts 1.2.4 ? ( peut etre que j'ai oublié quelque chose )

    quelqu'un peut m'aider SVP ?

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Apparemment, il te manque le jar commons-pool que tu peux télécharger ici.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Apparemment, il te manque le jar commons-pool que tu peux télécharger ici.
    exactement ,Merci beaucoup
    je viens de le faire ^^
    maintenant j'ai un probleme concernant l'affichage
    apres avoir mis le le pool.jar j'obtient ce message :

    org.apache.jasper.JasperException: /WEB-INF/Vues/liste.jsp(19,22) D'apr�s la TLD, le tag bean:write doit �tre vide, mais ne l'est pas
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1644)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1022)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1290)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1467)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1675)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1022)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1290)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1467)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1675)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1022)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1290)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1467)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:994)
    org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:553)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:211)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    je comprend rien de rien

  4. #4
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    D'après ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Userlist.add( new User( rs.getString("mail"), rs.getString("psw"), rs.getString("sexe"), rs.getString("ville")) );
    Userlist est une ArrayList d'objets de type User.
    Je suppose que le constructeur de la classe User met à jour les propriétés mail, psw, sexe et ville.

    Si c'est bien le cas, pour afficher le contenu de la liste, il faut coder ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <table> 
                <logic:iterate id="userRow" name="userlist">
                <tr> 
                    	<td ><bean:write name="userRow" property="mail"></td> 
                    	<td ><bean:write name="userRow" property="psw"></td> 
                    	<td ><bean:write name="userRow" property="sexe"></td> 
                    	<td ><bean:write name="userRow" property="ville"></td> 
                </tr> 
                </logic:iterate>
            </table>

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    D'après ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Userlist.add( new User( rs.getString("mail"), rs.getString("psw"), rs.getString("sexe"), rs.getString("ville")) );
    Userlist est une ArrayList d'objets de type User.
    Je suppose que le constructeur de la classe User met à jour les propriétés mail, psw, sexe et ville.

    Si c'est bien le cas, pour afficher le contenu de la liste, il faut coder ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <table> 
                <logic:iterate id="userRow" name="userlist">
                <tr> 
                    	<td ><bean:write name="userRow" property="mail"></td> 
                    	<td ><bean:write name="userRow" property="psw"></td> 
                    	<td ><bean:write name="userRow" property="sexe"></td> 
                    	<td ><bean:write name="userRow" property="ville"></td> 
                </tr> 
                </logic:iterate>
            </table>
    d'accord je vais l'essayer tout de suite, et je vous dirai le resultat
    merci encore

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    ca ne marche pas , il m'affiche la meme erreur que précédemment

    y'a t-il un autre moyen pour recuperer les donnees de la bases ?

  7. #7
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Désolée, j'ai fait un copier/coller du tag bean:write sans voir qu'il manquait le "/" à la fin.
    Donc, essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <table> 
                <logic:iterate id="userRow" name="userlist">
                <tr> 
                    	<td ><bean:write name="userRow" property="mail"/></td> 
                    	<td ><bean:write name="userRow" property="psw"/></td> 
                    	<td ><bean:write name="userRow" property="sexe"/></td> 
                    	<td ><bean:write name="userRow" property="ville"/></td> 
                </tr> 
                </logic:iterate>
            </table>

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Désolée, j'ai fait un copier/coller du tag bean:write sans voir qu'il manquait le "/" à la fin.
    Donc, essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <table> 
                <logic:iterate id="userRow" name="userlist">
                <tr> 
                    	<td ><bean:write name="userRow" property="mail"/></td> 
                    	<td ><bean:write name="userRow" property="psw"/></td> 
                    	<td ><bean:write name="userRow" property="sexe"/></td> 
                    	<td ><bean:write name="userRow" property="ville"/></td> 
                </tr> 
                </logic:iterate>
            </table>
    un super merci c_nvy ca a marché parfaitement ,

    pour faire la mise a jour des donnees je dois creer une autre classe action je pense ?

    j'ai lu quelque part qu'il est deconseillé de se connecter a un BD directement avec struts je me demande pourquoi

    et encore merci pour votre aide ^^

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

Discussions similaires

  1. [Débutant] Connexion d'une base de donnees MYSQL (.sql) avec C#
    Par ThorSQL dans le forum C#
    Réponses: 2
    Dernier message: 19/08/2011, 00h19
  2. probleme de connexion a une base de donnees
    Par idream dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/08/2009, 10h21
  3. Probleme connexion a une base de donnees mysql distantes
    Par hlimaiem dans le forum Installation
    Réponses: 8
    Dernier message: 11/10/2006, 10h03
  4. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06

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