|
|
|
|
Salut,
Peux-tu donner l'erreur exacte que produit la compilation ? sfx
|
RE,
j'ai fait la correction mais j'ai toujours la même erreur ???!!! Tu comprends pourquoi je fais appel au forum, je veux garder un maximum de cheveux lol. Merci de ton aide, Vincent B |
Salut Vincent,
si ton conteneur de servlet ne trouve pas cette classe, tu as peut-être un pb de classpath. Peux-tu nous en dire un peu plus sur ton environnement. puce
|
Re,
alors, si ta classe est dans dev/perso, c'est que ton package doit s'appeler dev.perso Donc dans tes import : import dev.perso.test; et la première ligne de ta classe doit être : package dev.perso; Je ne suis pas familière de JSWK, j'utilise exclusivement Tomcat (sous linux). Sous tomcat, il faut mettre les servlets de l'appli dans le WEB-INF/classes et les packages dans le WEB-INF/lib, mais tu sais surement déjà ça. puce
|
Alors, c'est parti pour le cour de Tomcat.
Tout d'abord, tu as quoi comme version, catalina ou tomcat3, parce que c'est pas le même comportement? l'organisation générale d'une appli sous tomcat est la suivante : (disont qu'elle est dans le répertoire examples) les fichiers HTML et JSP dans examples/ la partie servlet dans examples/WEB-INF, avec les packages dans examples/WEB-INF/lib, les servlets dans examples/WEB-INF/classes Ensuite tu doit avoir dans ce répertoire WEB-INF un fichier web.xml dans le quel tu décrit comment le conteneur (tomcat) va trouver ton servlet. Voici un exemple simple qui devrait marcher dans ton cas: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name>leNomDuServlet</servlet-name> <servlet-class>leNomDeLaClasse</servlet-class> </servlet> <servlet-mapping> <servlet-name>leNomDuServlet</servlet-name> <url-pattern>/servlet/leNomDuServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>EscompteServlet</servlet-name> <url-pattern>/servlet/leNomDuServlet/*</url-pattern> </servlet-mapping> </web-app> C'est très important de suivre cela. Si tu écrit ton web.xml de cette façon, ta JSP doit appeler le servlet vi l'url suvante : http://localhost:8080/examples/servlet/leNomDuServlet Tu ne met jamais le chemin exact (WEB-INF/classes/blablabla). Ensuite, il faut déployer ton appli dans tomcat. Pour catalina (tomcat4 et+), tu va dans le tomcat manager (http://localhost:8080/manager/html), dans "Install directory or war file located on server" tu peux installer directement ton appli. Pour tomcat3 c'est plus compliquer, elors je referai une bafouille si c'est le conteneur que tu as. reste plus qu'à tester. Chose importante : les logs sont dans chemin_to_tomcat/logs autre chose importante : dans le manager, tu peux stopper, relancer, supprimer un appli. ATTENTION si tu supprime une appli, toutes l'arborescence disparait!!!! Mieux vaut avoir une copie de tout dans un répertoire à part consacré au développement et déployer tes appli via un fichier war directement avec le tomcat manager, il cré alors automatiquement le répertoire racine et tout ce qui va avec. Voilà, j'espère que c'est pas trop d'un seul coup à avaler. N'hésite pas à poser d'autres questions, vu que mon blabla doit pas être d'une grande clareté. puce
|
Salut Vincent,
je suis bien contente que tu ai finalement pu t'en sortir. Pour tes autres questions, je suis moins à l'aise. Pour le tomcat manager, j'avoue que je n'ai jamais vraiment utilisé path et url, je déploie toujours mes applis sous fichiers war. En fait, je crois que si ton appli est dans le répertoire reconnu comme le "webapps" par tomcat, il suffit qu'elles aient un web.xml et tomcat les reconnait. URL et Path, ça doit être lorsqu'elles sont dans un autre repertoire que le "webapps"????? Ensuite, je connais pas grand chose de MySQL. Moi j'utilise postgresql sous linux. Pour faire communiquer mes servlets ou jsp avec le SGBD, j'utilse le driver JDBC livré avec postgreSQL. Le driver (posgresql.jar), je le met dans le WEB-INF/lib de mes applis. Je pense que ça doit marcher pareil pour MySQL. Il te suffit de récupérer le driver (google : "jdbc driver mysql" doit t'y ammener tout droit), et de le mettre dans le path de tes applis. Après, c'est du code jdbc, je peux te filer des exemples de code si tu veux. A peu près tout ce que tu as besoin de connaitre, c'est le port sur lequel écoute ton sgbd. Voilà, tu va bientôt en savoir autant que moi sur le sujet. bon java, puce
|
Salut Vincent,
voici un exemple que je crois simple pour te donner un aperçu de jdbc (attention, je n'ai pas testé, et ce n'est pas nom plus parole d'évangile) D'abord une classe générique pour se connecter : import java.sql.*; public class AccessToDB { Connection dbConnection; PreparedStatement stmt; static String dbDriver="org.mysql.Driver"; //le nom du driver jdbc, a verifier static String dbURL="jdbc:mysql://localhost:3306/mabase"; static String userID="nomUser"; static String passwd="passUser"; //connection to db public boolean connect() { try { Class.forName(dbDriver); dbConnection = DriverManager.getConnection(dbURL,userID,passwd); } catch(Exception e) { log(e); } if (dbConnection==null) return false; return true; } //pour un INSERT ou un UPDATE ou un DELETE public synchronized boolean insertQuery (String dbQuery) throws SQLException { boolean status = false; stmt = dbConnection.prepareStatement(query); int nbInsert = stmt.executeUpdate(dbQuery); if (nbInsert == 0) { log("Pb insertion"); status = false; } else { // all ok status = true; } stmt.close(); return status; } //pour un SELECT public synchronized ResultSet executeQuery(String query) throws SQLException { stmt = dbConnection.prepareStatement(query); ResultSet rs=stmt.executeQuery(); return rs; } //deconnection public static void cleanUp() { try { log("Closing database connection"); dbConnection.close(); } catch (SQLException e) { log(e); } } // Simple method for logging messages to console. protected void log(Object msg) { System.out.println(msg); } } Une classe classe qui utilise la classe précédente : /* un exemple simple d'utilisation de ta classe AccessDB */ import java.sql.ResultSet; public class Utilisation { static String dbDriver="org.mysql.Driver"; //le nom du driver jdbc, à vérifier static String dbURL="jdbc:mysql://localhost:3306/mabase"; static String userID="nomUser"; static String passwd="passUser"; public static void main (String [] args) { AccessBD access=new AccessBD(); String query="select nom, prenom, age, email from personne"; if (access.connect(dbDriver,dbURL,userID,passwd)) { ResultSet rs=access.executeQuery(query); while rs.next() { String nom=rs.getString("nom");//recupre la String contenue dans la colonne portant le nom "nom" String prenom=rs.getString("prenom"); int age=rs.getInt("age"); String mel=rs.getString("email"); System.out.println(nom+"\t"+prenom+"\t"+age+"\t"+mel); } } else System.out.println("pb de connection"); } } Ensuite, pour la doc java online (où il y a aussi les classes jdbc bien sure) : http://java.sun.com/j2se/1.4.2/docs/api/ N'hesite pas à poser des questions quand tu aura fait quelques essais. puce >>l'accumulation de sauts de puce qui font les joies de l'informatique. Les sauts de puce de certains on souvent l'air de pas de géant pour d'autres ;-)
|
Salut Vincent,
Postgres n'est pas intégré à Tomcat, ni à Apache, ni à un autre serveur. C'est un serveur de BD indépendant, comme doivent l'être tous les SGBD (et donc mySQL). En fait, toutes les applis doivent pouvoir attaquer les SGBD, pas seulement les servlets. On a aussi des sites en PHP, des appli locales en C et Java, des srcipts perl, et tout le tralala. Imagine ce que ça serait si on devait avoir une installation de Postgres, avec toutes nos bases de données, par type d'appli. Retiens donc bien ceci : LE SGBD EST INDEPENDANT de tomcat et apache. Bon, s'est vrai qu'avec EasyPHP, c'est tellement clickodrome à la windobe, qu'on voit pas bien comment ça fonctionne derrière. Quand tu demarre EasyPHP, tu démarre tout en même temps. Ca veut pas dire que tu ne peux pas attaqué ton SGBD autrement que via Apache et PHP. Les servlets (et toutes les autres appli java) communiquent avec le SGBD via le driver JDBC, comme je te l'ai dit précedemment. Il faut donc qu'ils sachent où trouver le driver (donc je le met dans le WEB-INF/lib), et où trouver le SGBD (URL, port, nom de la base, user, passwd). Ca n'est pas plus compliqué que cela. J'ai fait un petit google pour toi : http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/ y'a des exemples de connection à une bd mySQL écrit en java. Pour ton histoire de DNS, je vois pas le rapport ???? Ta machine, ou celle qui accueil le SGBD, n'est pas nommée? Je comprend pas ce que tu veux dire. Si c'est toujours pas clair, n'hésite pas. puce
|
Salut Vincent,
contente de voir que mes explications ne sont pas aussi vaseuses qu'elles n'en ont l'air. Pour ajouter un servlet context à tomcat, c'est bien de web.xml. Il faut donc un fichier web.xml par appli. Si tu as plusieurs servlet dans une même appli, tu ajoute, dans le même web.xml, autant de lignes <servlet><servlet-name>...</servlet-name><servlet-class>...</servlet-class></servlet> que tu as de servlet (idem pour les servlet-mapping). Pour les jars des classpath, tout dans WEB-INF/lib. Rien de plus dont je sois au courant. puce |
Résultats pour Interface et servlet
Résultats pour Interface et servlet
Résultats pour Interface et servlet
Résultats pour Interface et servlet
Résultats pour Interface et servlet