Bonjour,
J'apprends l'architecture MVC, et j'ai créé un programme divisé en 3 couches:
- web
- metier
- accès aux données
Le programme gère des réservations de voitures effectuées par des personnes (la couche metier comprend les classes Voiture, et Personne), sans gestion de l'historique.La base de données comprend trois tables: voitures, personnes, et réservations. Enfin, la couche données comprend une interface (échange avec la couche métier) et une classe implémentant cette interface.
Mon problème: au départ, j'ai utilisé une méthode "main" dans la classe Gare (qui implémente l'interface d'accès à la bdd), pour accéder aux données (pilote JDBC de Microsoft); après quelques réglages, le code ressemblait à ceci:
et ça marchait. 2e étape, j'ai enlevé la méthode main et créé à la place la méthode initConn appelée lors de la création du contrôleur: cela donne
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 package coucheDatas; import java.util.Vector; import coucheMetier.Personne; import coucheMetier.Voiture; import java.sql.*; public class Gare implements iAccèsDatas { public static void main(String[] args) { // TODO Raccord de méthode auto-généré Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url="jdbc:sqlserver://localhost;user=olivier;password=pw"; Connection conn=DriverManager.getConnection(url); DatabaseMetaData metaData=conn.getMetaData(); System.out.println(metaData.getDatabaseProductName()); System.out.println(metaData.getDriverName()); System.out.println(metaData.getUserName()); } catch (Exception e){ System.err.println("Erreur :"+e); } } ... etc
-CONTROLEUR:
-GARE
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 package coucheWeb; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Enumeration; import java.util.Vector; import java.sql.*; import coucheMetier.Personne; import coucheMetier.Voiture; import coucheDatas.Gare; /** * Servlet implementation class for Servlet: Contrôleur2 * */ public class Controleur extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#HttpServlet() */ private Gare maGare = new Gare(); public Controleur() { super(); } public void init(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("dans le servlet"); doInit(request, response); } public void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { maGare.initConn(); request.setAttribute("choix", ""); getServletContext().getRequestDispatcher("/WEB-INF/vues/pageChoix.jsp") .forward(request, response); }
...et cela ne marche pas. Lorsque je lance Tomcat, la console indique:
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 coucheDatas; import java.util.Vector; import coucheMetier.Personne; import coucheMetier.Voiture; import java.sql.*; public class Gare implements iAccèsDatas { /** * @param args */ public static Connection conn; public void initConn () { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost;user=olivier;password=pw"; System.out.println(url); conn = DriverManager.getConnection(url); DatabaseMetaData metaData = conn.getMetaData(); System.out.println(metaData.getDatabaseProductName()); } catch (Exception e) { System.err.println("Erreur :" + e); } }
Y a t-il une erreur dans la déclaration du servlet?Erreur :java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
Merci,
lolveley.
Partager