[JSP] Utiliser une base de données

Utiliser une base de données [JSP] - Java - Programmation

Marsh Posté le 16-11-2004 à 14:52:39    

Salut !
 
   Je débute en JSP.
Est-ce que qqun saurait comment on peut utiliser une base de données MySQL ou PostgreSQL avec le JSP ?
 
    merci d'avance


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 16-11-2004 à 14:52:39   

Reply

Marsh Posté le 16-11-2004 à 15:10:24    

de la même manière qu'en java.

Reply

Marsh Posté le 16-11-2004 à 15:12:45    

ok merci
je vais voir ce que je peux trouver avec cet indice
 
c vraiment exactement pareil ?


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 16-11-2004 à 15:18:29    

oui.
 
Le seul point qui change n'est pas technique et concerne les "bonnes pratiques". En gros : éviter d'utiliser la base de donnée directement depuis les jsp, qui ne devraient servir qu'à la présentation.  
 
sinon pour t'orienter dans tes recherche, le mot clef est : JDBC

Reply

Marsh Posté le 16-11-2004 à 15:26:56    

sire de Botcor a écrit :


c vraiment exactement pareil ?

faudra ptet commencer par voir ce qu'est exactement un jsp, si t'en es à poser cette question [:icon12]

Reply

Marsh Posté le 16-11-2004 à 16:58:08    

qqun aurait un petit exemple de code qui fait une petite requête dans une base (à laquelle il se connecte), svp ?


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 16-11-2004 à 16:59:46    

Reply

Marsh Posté le 17-11-2004 à 09:58:46    

Bonjour tt le monde !
 
alors, j'ai essayé ça, qui m'avait l'air pas mal :
 

Citation :


<%@page import="java.net.URL"%>
<%@page import="java.sql.*"%>
 
<%
 class.forName("com.mysql.jdbc.Driver" );
 connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/firstDB","admin","admin" );
 out.println("OK, the connection to the db is working" );
 
 Statement smt = con.createStatement ();
 ResultSet rs = smt.executeQuery("SELECT * FROM bouh" );
 out.println(rs);
 
 rs.close;
 smt.close();
%>


mais il me sort 11 erreurs !
une seule chose me chiffonnait : je n'indique nulle part à quelle base de donnée je veux me connecter
 
est-ce que qqun verrait où il y a un pb ?


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 10:10:11    

sire de Botcor a écrit :


une seule chose me chiffonnait : je n'indique nulle part à quelle base de donnée je veux me connecter


 
et ca, c'est quoi alors :??:

Citation :


jdbc:mysql://localhost:3306/firstDB

Reply

Marsh Posté le 17-11-2004 à 10:14:47    

ah oui, pardon...
du coup il est parfait mon code, non ?  :whistle:  
 
par contre j'avais cru comprendre qu'il me fallait 4 choses :
 - jsdk.jar
 - mysql.jar
 - servlet.jar
 - swing.jar
 
je les ai téléchargés mais je ne sais pas ce que je dois en faire :
il faut les décompresser qq part ?
 
edit : mysql fonctionne en mode lignes de commandes
        tomcat et le code jsp sans accès à la db, ça marche aussi


Message édité par sire de Botcor le 17-11-2004 à 10:20:37

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 10:14:47   

Reply

Marsh Posté le 17-11-2004 à 10:20:15    

mais heu non.
 
servlet.jar est fourni par tomcat, jsdk.jar c'est une connerie, puisque ben le jdk, c'est pas un jar. Swing n'a rien a foutre la non plus, c'est pour les interfaces graphiques.
 
pour tes erreurs, lis les, et si tu trouve vraiment pas montre les, sinon on peut pas t'aider

Reply

Marsh Posté le 17-11-2004 à 10:22:11    

désolé d'alourdir le topic...
voici ma page d'erreur renvoyée :
 

Citation :


Etat HTTP 500 -
 
type Rapport d'exception
 
message
 
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
 
exception
 
org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:48: <identifier> expected
 class.forName("com.mysql.jdbc.Driver" );
             ^
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:48: '{' expected
 class.forName("com.mysql.jdbc.Driver" );
                                              ^
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:50: <identifier> expected
 out.println("OK, the connection to the db is working" );
                   ^
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:54: <identifier> expected
 out.println(rs);
                   ^
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:56: <identifier> expected
 rs.close;
                ^
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:57: <identifier> expected
 smt.close();
                 ^
 
 
Une erreur s'est produite à la ligne: 15 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:59: <identifier> expected
      out.write('\r');
               ^
 
 
Une erreur s'est produite à la ligne: 15 dans le fichier jsp: /connexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:60: <identifier> expected
      out.write('\n');
               ^
 
 
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:61: 'catch' without 'try'
    } catch (Throwable t) {
      ^
 
 
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:32: 'try' without 'catch' or 'finally'
    try {
    ^
 
 
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\connexbase_jsp.java:73: '}' expected
^
11 errors
 
 
 
 org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
 org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
 org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 10:32:11    

Class avec un C majuscule

Reply

Marsh Posté le 17-11-2004 à 10:32:39    

apres les autres erreurs c'est bidon, vu que le parseur se vautre sur 'class'

Reply

Marsh Posté le 17-11-2004 à 10:37:00    

impressionnant : plus qu'1 seule erreur :
 

Citation :


Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /oldconnexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\oldconnexbase_jsp.java:56: not a statement
 rs.close;
          ^
1 error


 
si je mets "rs.close();" à la place de "rs.close;"
il y a une autre erreur :
 

Citation :


Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /oldconnexbase.jsp
Erreur de servlet générée:
C:\Program Files\Tomcat 5.0.28\work\Catalina\localhost\_\org\apache\jsp\oldconnexbase_jsp.java:49: cannot resolve symbol
symbol  : class connection  
location: class org.apache.jsp.oldconnexbase_jsp
 
 
Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /oldconnexbase.jsp
Erreur de servlet générée:
 connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/firstDB","admin","admin" );
        ^
1 error


Donc j'imagine qu'il ne faut pas ces parenthèses.


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 10:48:41    

J'ai mis une majuscule aussi à "Connection.."
du coup je n'ai plus d'erreur mais un problème :
 

Citation :


Etat HTTP 500 -
 
type Rapport d'exception
 
message
 
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
 
exception
 
javax.servlet.ServletException: com.mysql.jdbc.Driver
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
 org.apache.jsp.oldconnexbase_jsp._jspService(oldconnexbase_jsp.java:66)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
cause mère
 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
 org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:148)
 org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:69)
 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
 java.lang.Class.forName0(Native Method)
 java.lang.Class.forName(Class.java:141)
 org.apache.jsp.oldconnexbase_jsp._jspService(oldconnexbase_jsp.java:48)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 10:49:04    

C'est pas imaginer qu'il faut, c'est vérifier.
c'est une méthode, donc il faut ces parenthèses.
 
et java est sensible a la casse, donc merci de mettre un C majuscule a Connection.

Reply

Marsh Posté le 17-11-2004 à 10:49:37    

ok, ben la c'est le jar de mysql qu'il ne trouve pas.
mets le dans le repertoire WEB-INF/lib de ta webapp, et reessaye

Reply

Marsh Posté le 17-11-2004 à 10:51:23    

ça va lorill, tu tiens le coup?

Reply

Marsh Posté le 17-11-2004 à 10:59:33    

dsl real-- mais je n'ai pas fait de java depuis 3 plombes et je débute en jsp...
 
ok, merci lorill, j'ai mis les parenthèses
j'ai mis le mysql.jar dans "....\Tomcat 5.0.28\webapps\ROOT\WEB-INF\lib"
mais l'erreur est toujours la même
peut-être faut-il l'importer ?
 
edit: j'ai redémarrer Tomcat : même chose


Message édité par sire de Botcor le 17-11-2004 à 11:01:13

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 11:01:06    

t'as redemarré tomcat?
 
 
(3 plombes mon cul, à ce niveau là t'en as jamais fait de java [:itm])

Reply

Marsh Posté le 17-11-2004 à 11:02:41    

the real moins moins a écrit :

ça va lorill, tu tiens le coup?


moui, je ca fait longtemps que j'ai plus trop aidé, ca me change un peu  :o  
 

... :


j'ai mis le mysql.jar dans "....\Tomcat 5.0.28\webapps\ROOT\WEB-INF\lib"
mais l'erreur est toujours la même
peut-être faut-il l'importer ?


ta jsp est dans ROOT ? [:daplopbot]
tu as bien relancé tomcat entre ?
 
ton mysql.jar, il vient d'ou, il y a quoi dedans ?
parce qu'il me semble qu'il y a plusieurs versions, avec plusieurs url jdbc différentes...

Reply

Marsh Posté le 17-11-2004 à 11:12:49    

YaHOOOOOOOOOOO !!!!!!!!!!!!!!!!!
ça marche
 
en fait j'ai décompresser le mysql.jar
et je me suis aperçu que le chemin était
org.gjt.mm.mysql.Driver et non com.mysql.jdbc.Driver
 
merci beaucoup lorill et real-- !


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 11:14:35    

utilise le mysql-connector de mysql.com, beaucoup plus recent que mm-mysql sur lequel il est basé

Reply

Marsh Posté le 17-11-2004 à 11:15:21    

the real moins moins a écrit :

utilise le mysql-connector de mysql.com, beaucoup plus recent que mm-mysql sur lequel il est basé


mais hélas publié sous une autre licence. font chier :o

Reply

Marsh Posté le 17-11-2004 à 11:15:38    

c-a-d ?

Reply

Marsh Posté le 17-11-2004 à 11:20:28    

GPL, alors que mm était en LGPL.
ce qui m'emmerde, dans la mesure ou je tiens a publier mon truc avec mysql, et en restant en lgpl

Reply

Marsh Posté le 17-11-2004 à 11:28:12    

merci, j'ai mis le mysql-connector sans mm à la place
(même si je ne sais pas ce qu'il fait de +)
mais je ne suis pas au faîte des subtilités de licence...


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 11:37:53    

sdb >> mysql-connector ne fait rien "de plus", mais il est plus à jour, simplement. il supporte aussi jdbc3 alors que mm s'etait arreté a jdbc2 je pense
 
lorill >> je connais pas bien les diffs entre les licenses, mais de toutes façons, tu utilises du jdbc standard, et je suppose que tu vas pas t'amuser a distribuer "ton truc" ([:icon12]) avec tous les drivers jdbc que tu trouves, ouais?

Reply

Marsh Posté le 17-11-2004 à 11:41:58    

Pour fignoler le topic, je mets le script complet de connexion à une base de donées mysql en JSP (avec Tomcat).
 

Citation :


<%@page import="java.net.URL"%>
<%@page import="java.sql.*"%>
 
<%
 Class.forName("com.mysql.jdbc.Driver" );
 Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/firstDB","","" );
 out.println("OK, the connection to the db is working" );
 
 Statement smt = con.createStatement ();
 ResultSet rs = smt.executeQuery("SELECT * FROM bouh;" );  
 ResultSetMetaData rsMeta = rs.getMetaData();
 int noCols = rsMeta.getColumnCount();
 
 out.println("<table border><tr>" );
 for (int c=1; c<=noCols; c++) {
  String el = rsMeta.getColumnLabel(c);
  out.println("<th> " + el + " </th>" );
 }
 out.println("</tr>" );
 while (rs.next()) {
  out.println("<tr>" );
  for (int c=1; c<=noCols; c++) {
   String el = rs.getString(c);
   out.println("<td> " + el + " </td>" );
  }
  out.println("</tr>" );
 }
 out.println("</table>" );
 
 rs.close();
 smt.close();
%>



Message édité par sire de Botcor le 17-11-2004 à 15:00:59

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 11:42:07    

ça me rappelle mes débuts [:sisicaivrai]

Reply

Marsh Posté le 17-11-2004 à 12:22:33    

the real moins moins a écrit :


lorill >> je connais pas bien les diffs entre les licenses, mais de toutes façons, tu utilises du jdbc standard, et je suppose que tu vas pas t'amuser a distribuer "ton truc" ([:icon12]) avec tous les drivers jdbc que tu trouves, ouais?


hé ben, mon jdbc assez standard, mais pas le sql qui passe dedans (crée une table pour mysql, une autre pour postgres, et pouf, les types de données sont déja différents).
 
et pour la distrib, je distribue tous les drivers nécéssaires (a conditions que j'en ai le droit) si le reste est supporté.

Reply

Marsh Posté le 17-11-2004 à 12:37:59    

sire de Botcor a écrit :

Pour fignoler le topic, je mets le script complet de connexion à une base de donées mysql en JSP (avec Tomcat).


 
bon, maintenant, tu me passes ca en propre, c.a.d le jsp uniquement pour la presentation [:marc]


---------------
IVG en france
Reply

Marsh Posté le 17-11-2004 à 13:39:00    

lorill a écrit :

hé ben, mon jdbc assez standard, mais pas le sql qui passe dedans (crée une table pour mysql, une autre pour postgres, et pouf, les types de données sont déja différents).

je t'ai pas déjà conseillé d'utiliser hibernate? [:marc]

Reply

Marsh Posté le 17-11-2004 à 14:18:02    

the real moins moins a écrit :

je t'ai pas déjà conseillé d'utiliser hibernate? [:marc]

si, mais je n'en veut pas pour le moment

Reply

Marsh Posté le 17-11-2004 à 14:43:36    

ça resoudrait ce genre de probleme [:spamafote]
(grace à la notion de "Dialect" )

Reply

Marsh Posté le 17-11-2004 à 15:00:37    

uriel a écrit :

bon, maintenant, tu me passes ca en propre, c.a.d le jsp uniquement pour la presentation [:marc]


 
pardon ?  :??:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 15:27:19    

lorill a écrit :


Le seul point qui change n'est pas technique et concerne les "bonnes pratiques". En gros : éviter d'utiliser la base de donnée directement depuis les jsp, qui ne devraient servir qu'à la présentation.  


 :hello:

Reply

Marsh Posté le 17-11-2004 à 15:36:56    

ben je veux bien mais tu les mets où les accès à la base de données ?


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 17-11-2004 à 15:38:09    

tu sais que tu peux utiliser des classes Java normales avec ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed