récupérer des données de BDD sur la page JSP/servlet
salut tout le monde
J'ai une base de données MySqlet j'aimerai récupérer les données stocké dans BD
ma servlet est la suivante :
Code:
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 50 51 52
| package com.example;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mql.com.metier.CatalogueMetierProduitImpl;
import mql.com.metier.ICatalogueProduitMetier;
import mql.com.metier.Produit;
import mql.com.model.ProduitModel;
public class ControleurServletProduit extends HttpServlet {
private static final long serialVersionUID = 1L;
private ICatalogueProduitMetier metier;
@Override
public void init() throws ServletException {
metier =new CatalogueMetierProduitImpl("ecommerce");
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("produit.jsp").forward(request, response);
System.out.println("GET");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ProduitModel model=new ProduitModel();
model.getProduit().setDesignation(request.getParameter("designationtxt"));
model.getProduit().setPrix(Double.parseDouble( request.getParameter("prixtxt")));
model.getProduit().setQuantite(Integer.parseInt(request.getParameter("qtetxt")));
metier.addProduit(model.getProduit());
request.setAttribute("modelProduit", metier.allProduit());
request.getRequestDispatcher("produit.jsp").forward(request, response);
}
} |
J'ai eu une classe CatalogueMetierProduitImpl qui contient les différentes opérations d'insertion, de récupérer un produit ...
Code:
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| package mql.com.metier;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.PreparedStatement;
import mql.com.util.BDInteraction;
import mql.com.util.SingletonConnexion;
public class CatalogueMetierProduitImpl extends BDInteraction implements
ICatalogueProduitMetier {
public CatalogueMetierProduitImpl(String BD) {
super(BD);
}
@Override
public void addProduit(Produit p) {
connect();
String sql = "INSERT INTO `produit`(`Designation`, `Prix`, `Quantite`) VALUES ('"
+ p.getDesignation()
+ "','"
+ p.getPrix()
+ "','"
+ p.getQuantite() + "')";
MJR(sql);
disconnect();
}
@Override
public void upDateProduit(Produit p) {
connect();
String sql = "UPDATE `produit` SET `Designation`='"
+ p.getDesignation() + "',`Prix`='" + p.getPrix()
+ "',`Quantite`='" + p.getQuantite() + "' WHERE `idProduit`='"
+ p.getIdProduit() + "'";
System.out.println("le produit dans la commande modifier : "
+ p.getPrix());
MJR(sql);
disconnect();
/*
* Connection conn=SingletonConnexion.getConnexion(); try {
* PreparedStatement ps=(PreparedStatement) conn.prepareStatement(
* "UPDATE `produit` SET `Designation`=?,`Prix`=?,`Quantite`=? WHERE `idProduit`=?"
* ); ps.setString(1, p.getDesignation()); ps.setDouble(2, p.getPrix());
* ps.setInt(3, p.getQuantite()); ps.setInt(4, p.getIdProduit());
* ps.executeQuery(); ps.close(); } catch (Exception e) {
*
* }
*/
}
@Override
public void delete(int id) {
connect();
String sql = "DELETE FROM `produit` WHERE `idProduit`='" + id + "'";
MJR(sql);
disconnect();
}
@Override
public List<Produit> allProduit() {
ArrayList<Produit> produits = new ArrayList<Produit>();
connect();
String sql = "SELECT * FROM `produit`";
ResultSet rs = Select(sql);
try {
while (rs.next()) {
Produit p = new Produit();
p.setDesignation(rs.getString(2));
p.setPrix(rs.getDouble(3));
p.setQuantite(rs.getInt(4));
produits.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
}
disconnect();
return produits;
}
@Override
public List<Produit> getProduitByKey(String designation) {
ArrayList<Produit> produits = new ArrayList<Produit>();
connect();
String sql = "SELECT * FROM `produit` where `Designation` like '"
+ designation + "'";
ResultSet rs = Select(sql);
try {
while (rs.next()) {
Produit p = new Produit();
p.setDesignation(rs.getString(2));
p.setPrix(rs.getDouble(3));
p.setQuantite(rs.getInt(4));
produits.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
}
disconnect();
if (produits == null)
throw new RuntimeException(designation + " N'existe pas");
return produits;
}
@Override
public Produit getProduit(int id) {
Produit p = null;
connect();
String sql = "SELECT * FROM `produit` where `idProduit`='" + id + "'";
ResultSet rs = Select(sql);
try {
while (rs.next()) {
p = new Produit();
p.setDesignation(rs.getString(2));
p.setPrix(rs.getDouble(3));
p.setQuantite(rs.getInt(4));
}
} catch (SQLException e) {
e.printStackTrace();
}
disconnect();
if (p == null)
throw new RuntimeException(id
+ " => l'id Produit introuvable get By Id");
return p;
}
} |
et une classe BDInteraction de connexion à la base des données ...
Code:
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| package mql.com.util;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class BDInteraction {
Connection conn;
Statement st;
ResultSet rs;
String url;
public BDInteraction(String BD) {
try {
Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://127.0.0.1/" + BD;
} catch (Exception e) {
e.printStackTrace();
}
}
public void connect() {
try {
conn = DriverManager.getConnection(url, "root", "");
st = (Statement) conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
public void disconnect() {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet Select(String sql) {
try {
rs = st.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
public int MJR(String sql) {
int nb = 0;
try {
nb = st.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
return nb;
}
public boolean next() {
try {
return rs.next();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
} |
j'ai testé toute les opérations à réaliser et c'est bon
Il y a dans la servlet le variable model qui t elle une classe qui contient mon model
Code:
1 2 3 4 5 6 7 8 9
| public class ProduitModel {
private String designation;
private int quantete;
private double prix;
private List<Produit> tousProduits = new ArrayList<Produit>();
private Produit produit = new Produit();
//avec les getters et les setters |
Dans la phase d'ajout la connexion entre la servlet et la page jsp ça marche et tout va bien mais l'opérations d'affichage des données pas ça n'a pas marcher
alors dans DoPost de servlet il y a une partie d'ajout
Code:
1 2 3 4
| model.getProduit().setDesignation(request.getParameter("designationtxt"));
model.getProduit().setPrix(Double.parseDouble( request.getParameter("prixtxt")));
model.getProduit().setQuantite(Integer.parseInt(request.getParameter("qtetxt")));
metier.addProduit(model.getProduit()); |
et il y a une partie pour l'affichage
Code:
1 2 3 4
| model.setTousProduits(metier.allProduit());
request.setAttribute("modelProduit", model);
request.getRequestDispatcher("produit.jsp").forward(request, response); |
et la partie html est la suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <b>Afficher les produits</b>
<table>
<tr>
<td>idProduit</td>
<td>designation</td>
<td>prix</td>
<td>quantite</td>
</tr>
<c:forEach items="${modelProduit.tousProduits }" var="p">
<tr>
<td>${p.idProduit }</td>
<td>${p.designation }</td>
<td>${p.prix }</td>
<td>${p.quantite }</td>
</tr>
</c:forEach>
</table> |
je n'arrive pas à résoudre le problème Y-a-t-il une personne qui peut m'aider et merci d'avance