Probleme dans mon code JEE

Résolu/Fermé
ouilibona Messages postés 9 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 7 décembre 2014 - Modifié par KX le 29/08/2014 à 21:33
ouilibona Messages postés 9 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 7 décembre 2014 - 2 sept. 2014 à 19:59
bonjour les amis j ai un serieux probleme sur mon projet de JEE, j'ai créer une page JSP je veux a ce que cette page la fait l'ajout et la modification . l'ajout marche mais si je veux fait la modification il me revoi un message d'erreu voici le message
type Rapport d''exception

message

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception

java.lang.NullPointerException
com.etud.dao.EtudiantDao.addEtudiant(EtudiantDao.java:32)
com.etud.controller.EtudiantController.doPost(EtudiantController.java:69)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.42.
et voici le code
EtudiantDao
package com.etud.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.etud.model.Etudiant;
import com.etud.util.DbUtil;

public class EtudiantDao {
 
 private Connection connection;

    public EtudiantDao() {
        connection = DbUtil.getConnection();
    }

    public void addEtudiant(Etudiant etudiant) {
        try {
            PreparedStatement preparedStatement = connection
                    .prepareStatement("insert into etudiant(nom,prenom,adresse,telephone,email,datenaiss) values (?, ?, ?, ?, ?, ? )");
            // Parameters start with 1
            preparedStatement.setString(1, etudiant.getNom());
            preparedStatement.setString(2, etudiant.getPrenom());
            preparedStatement.setString(3, etudiant.getAdresse());
            preparedStatement.setString(4, etudiant.getTelephone());
            preparedStatement.setString(5, etudiant.getEmail());
            preparedStatement.setDate(6, new java.sql.Date(etudiant.getDatenaiss().getTime()));
            preparedStatement.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void deleteEtudiant(int Idetudiant) {
        try {
            PreparedStatement preparedStatement = connection
                    .prepareStatement("delete from etudiant where idetudiant=?");
            // Parameters start with 1
            preparedStatement.setInt(1, Idetudiant);
            preparedStatement.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void updateEtudiant(Etudiant etudiant) {
        try {
            PreparedStatement preparedStatement = connection
                    .prepareStatement("update etudiant set nom=?, prenom=?, adresse=?, telephone=?, email=?, datenaiss=?" +
                            "where idetudiant=?");
            // Parameters start with 1
            preparedStatement.setString(1, etudiant.getNom());
            preparedStatement.setString(2, etudiant.getPrenom());
            preparedStatement.setString(3, etudiant.getAdresse());
            preparedStatement.setString(4, etudiant.getTelephone());
            preparedStatement.setString(5, etudiant.getEmail());
            preparedStatement.setDate(6, new java.sql.Date(etudiant.getDatenaiss().getTime()));
            preparedStatement.setInt(7, etudiant.getIdetudiant());
            preparedStatement.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public List<Etudiant> getAllEtudiant() {
        List<Etudiant> etudiants = new ArrayList<Etudiant>();
        try {
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("select * from etudiant");
            while (rs.next()) {
                Etudiant etudiant = new Etudiant();
                etudiant.setIdetudiant(rs.getInt("idetudiant"));
                etudiant.setNom(rs.getString("nom"));
                etudiant.setPrenom(rs.getString("prenom"));
                etudiant.setAdresse(rs.getString("adresse"));
                etudiant.setTelephone(rs.getString("telephone"));
                etudiant.setEmail(rs.getString("email"));
                etudiant.setDatenaiss(rs.getDate("datenaiss"));
                etudiants.add(etudiant);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return etudiants;
    }

    public Etudiant getEtudiantById(int Idetudiant) {
        Etudiant etudiant = new Etudiant();
        try {
            PreparedStatement preparedStatement = connection.
                    prepareStatement("select * from etudiant where idetudiant=?");
            preparedStatement.setInt(1, Idetudiant);
            ResultSet rs = preparedStatement.executeQuery();

            if (rs.next()) {
                etudiant.setIdetudiant(rs.getInt("idetudiant"));
                etudiant.setNom(rs.getString("nom"));
                etudiant.setPrenom(rs.getString("prenom"));
                etudiant.setAdresse(rs.getString("adresse"));
                etudiant.setTelephone(rs.getString("telephone"));
                etudiant.setEmail(rs.getString("email"));
                etudiant.setDatenaiss(rs.getDate("datenaiss"));
                
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return etudiant;
    }

}

le code cottroller ou servlet
EtudiantController
package com.etud.controller;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.etud.dao.EtudiantDao;
import com.etud.model.Etudiant;

public class EtudiantController extends HttpServlet {
 private static final long serialVersionUID = 1L;
    private static String INSERT_OR_EDIT = "/etudiant.jsp";
    private static String LIST_ETUDIANT = "/listEtudiant.jsp";
    private EtudiantDao dao;

    public EtudiantController() {
        super();
        dao = new EtudiantDao();
    }
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String forward="";
             String action = request.getParameter("action");

             if (action.equalsIgnoreCase("delete")){
                 int Idetudiant= Integer.parseInt(request.getParameter("Idetudiant"));
                 dao.deleteEtudiant(Idetudiant);
                 forward = LIST_ETUDIANT;
                 request.setAttribute("etudiants", dao.getAllEtudiant());    
             } else if (action.equalsIgnoreCase("edit")){
                 forward = INSERT_OR_EDIT;
                 int Idetudiant = Integer.parseInt(request.getParameter("Idetudiant"));
                 Etudiant etudiant = dao.getEtudiantById(Idetudiant);
                 request.setAttribute("etudiant", etudiant);
             } else if (action.equalsIgnoreCase("listEtudiant")){
                 forward = LIST_ETUDIANT;
                 request.setAttribute("etudiants", dao.getAllEtudiant());
             } else {
                 forward = INSERT_OR_EDIT;
             }

             RequestDispatcher view = request.getRequestDispatcher(forward);
             view.forward(request, response);
         }
      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       Etudiant etudiant = new Etudiant();
            etudiant.setNom(request.getParameter("nom"));
            etudiant.setPrenom(request.getParameter("prenom"));
            etudiant.setAdresse(request.getParameter("adresse"));
            etudiant.setTelephone(request.getParameter("telephone"));
            etudiant.setEmail(request.getParameter("email"));
            String idetudiant = request.getParameter("idetudiant");
            try {
                Date datenaiss = new SimpleDateFormat("dd/MM/yyyy").parse(request.getParameter("datenaiss"));
                etudiant.setDatenaiss(datenaiss);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            if(idetudiant == null || idetudiant.isEmpty())
            {
                dao.addEtudiant(etudiant);
            }
            else
            {
                etudiant.setIdetudiant(Integer.parseInt(idetudiant));
                dao.updateEtudiant(etudiant);
            }
            RequestDispatcher view = request.getRequestDispatcher(LIST_ETUDIANT);
            request.setAttribute("etudiants", dao.getAllEtudiant());
            view.forward(request, response);
        }
       
      }




le code jsp
etudiant
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[http://www.w3.org/TR/html4/loose.dtd]">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/style.css" />
   <script language="javascript">
   function verif_champ()
   {
    if(document.frmAddUser.nom.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!");
     document.frmAddUser.nom.focus();
     return false;
    }
    if(document.frmAddUser.prenom.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!");
     document.frmAddUser.prenom.focus();
     return false;
    }
    if(document.frmAddUser.adresse.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!");
     document.frmAddUser.adresse.focus();
     return false;
    }
    if(document.frmAddUser.telephone.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!");
     document.frmAddUser.telephone.focus();
     return false;
    }
    if(document.frmAddUser.email.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!")
     document.frmAddUser.email.focus();
     return false;
    }
     
    if(document.frmAddUser.datenaiss.value=="")
    {
     alert("Le Champ Est Obligatoire Merci !!!")
     document.frmAddUser.datenaiss.focus();
     return false;
    }
   }
   </script>
<title>Insert title here</title>
  </head>
  <body>
 <form method="POST" action='EtudiantController' name="frmAddUser" onsubmit="return verif_champ()">
       <label> Numero Etudiant : </label><input type="text" readonly="readonly" name="idetudiant" disabled="disabled"  
       <c:out value="${etudiant.idetudiant}" />/> <br /> 
       <label> Nom : </label> <input type="text" name="nom" 
       <c:out value="${etudiant.nom}" />/> <br /> 
       <label> Prenom : </label> <input type="text" name="prenom" 
       <c:out value="${etudiant.prenom}" />/> <br />
       <label> Adresse : </label> <input type="text" name="adresse"
       <c:out value="${etudiant.adresse}" />/> <br /> 
       <label> Telephone : </label> <input type="text" name="telephone"
       <c:out value="${etudiant.telephone}" />/> <br />
       <label> Email : </label> <input type="text" placeholder="email" name="email" 
       <c:out value="${etudiant.email}" /> /> <br /> 
       <label> Date Naissance : </label> <input type="text" name="datenaiss"
       <fmt:formatDate pattern="dd/MM/yyyy" value="${etudiant.datenaiss}" />/> <br /> 
       <input type="submit" value="Submit" />
    </form>
</body>
</html>

Merci d'avance pour la personne qui peut m'aider voici mon adresse mail
Coordonnées supprimées par la modération
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
29 août 2014 à 21:36
Bonjour,

Comme indiqué dans le message d'erreur tu as un NullPointerException sur la ligne 32 :

preparedStatement.setDate(6, new java.sql.Date(etudiant.getDatenaiss().getTime()));

Il faut donc regarder, si
etudiant==null
ou si
etudiant.getDatenaiss()
...
0
ouilibona Messages postés 9 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 7 décembre 2014
30 août 2014 à 17:08
Bonjour merci pour ton aide, mais la ligne ke vous me demande de regarder j ai essayer mais sa ne marche pas, je repete ma kestion je veux faire l ajout et la modification sur la meme page jsp en ce moment l ajout marche bien, et l affichage et la suppression aussi mais lorsque. Je veux faire la modification il me renvoi. Cet message d eurreur s il vous plait aide moi
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 août 2014 à 17:43
Déjà est-ce que la ligne 32 indiqué dans la trace de l'exception correspond bien à la ligne 32 dans le code que tu as copier/coller ? Si c'est bien celle que j'ai repris ci-dessus il n'y a pas foules de solutions possibles pour avoir un NullPointerException...

1) preparedStatement==null
2) etudiant==null
3) etudiant.getDatenaiss()==null

Les cas 1 et 2 sont impossibles car sinon l'erreur aurait eu lieu sur les lignes de codes avant, il ne reste donc qu'une possibilité : la 3.

Quand on regarde plus attentivement ton code on a ça :

            try {
                Date datenaiss = new SimpleDateFormat("dd/MM/yyyy").parse(request.getParameter("datenaiss"));
                etudiant.setDatenaiss(datenaiss);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            if(idetudiant == null || idetudiant.isEmpty())
            {
                dao.addEtudiant(etudiant);
            }

Si tu as
etudiant.getDatenaiss()==null
dans la méthode
dao.addEtudiant(etudiant)
cela signifie que tu n'as jamais fait
etudiant.setDatenaiss(datenaiss);
parce qu''avant tu as eu une ParseException ! Tu pourrais aller voir dans la log du serveur où s'est affiché le
e.printStackTrace();
ou alors faire remonter l'erreur au client avec un
throw new RuntimeException("can't set datenaiss",e);
mais clairement tu ne devrais jamais continuer tes opérations sans la date de naissance de l'étudiant !

String paramDateNaiss = request.getParameter("datenaiss");
String format = "dd/MM/yyyy";

try
{
    Date datenaiss = new SimpleDateFormat(format).parse(paramDateNaiss);
    etudiant.setDatenaiss(datenaiss);
}
catch (Exception e)
{
    throw new IllegalFormatException("param datenaiss="+paramDateNaiss+" is not a valid '"+format+" ' date", e);
}

if (idetudiant == null || idetudiant.isEmpty())
    dao.addEtudiant(etudiant);

Normalement, tu ne devrais plus avoir de NullPointerException dans la méthode addEtudiant, mais une IllegalFormatException dans ta méthode doPost. Il faudra alors voir ce qu'elle dit pour comprendre le problème.
0
ouilibona Messages postés 9 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 7 décembre 2014
31 août 2014 à 21:04
Bonsoir merci pour votre disponibilité de m'avaoir aider sur mon probleme, en fait le code que vous m'avez envoyez j 'ai essayer mais il me deonne des erreur et illegalformatEexception ne march pas sur mon eclipse
voici le message d'erreur et le code que vous ,puis j'ai essayer a la place illegalformatException j ai mis IllegalArgumentException mai sa donné l'erreur
type Rapport d''exception

message param datenaiss=2001-05-05 is not a valid 'yyyy/MM/dd ' date
description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête
voici le code qui ne marche pas toujours
String paramDateNaiss=request.getParameter("datenaiss");
String format="yyyy/MM/dd";
try {
Date datenaiss= new SimpleDateFormat(format).parse(paramDateNaiss);
etudiant.setDatenaiss(datenaiss);
} catch (Exception e) {
throw new IllegalFormatException("param datenaiss="+paramDateNaiss+" is not a valid '"+format+" ' date", e);

}
if(idetudiant == null || idetudiant.isEmpty())
{
dao.addEtudiant(etudiant);
}
else
{
etudiant.setIdetudiant(Integer.parseInt(idetudiant));
dao.updateEtudiant(etudiant);
}


exception

java.lang.IllegalArgumentException: param datenaiss=2001-05-05 is not a valid 'yyyy/MM/dd ' date
com.etud.controller.EtudiantController.doPost(EtudiantController.java:72)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


cause mère

java.text.ParseException: Unparseable date: "2001-05-05"
java.text.DateFormat.parse(Unknown Source)
com.etud.controller.EtudiantController.doPost(EtudiantController.java:69)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.42.

merci pour votre disponibilité
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 août 2014 à 21:12
illegalformatEexception ne march pas sur mon eclipse
Ce n'est pas grave IllegalArgumentException c'est bien aussi (c'est sa classe mère) l'important c'est d'avoir le message de l'exception : param datenaiss=2001-05-05 is not a valid 'yyyy/MM/dd ' date

Comme écrit noir sur blanc, la date de naissance est séparée avec des tirets "2001-05-05" alors que tu essayes de parser avec des slashs "yyyy/MM/dd".
Donc soit tu changes l'un, soit tu changes l'autre, mais il faut être cohérent.
0
ouilibona Messages postés 9 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 7 décembre 2014
31 août 2014 à 22:06
merci pour votre aide y'a aucune message d'erreur maintenant quant je veux modifier la ligne , il ajoute la ligne au lieu de modifier , je repete j'ai une seul page jsp je veux faire l'ajout et la modification sur la meme page jsp merci
voici le code
EtudiantController
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Etudiant etudiant = new Etudiant();
etudiant.setNom(request.getParameter("nom"));
etudiant.setPrenom(request.getParameter("prenom"));
etudiant.setAdresse(request.getParameter("adresse"));
etudiant.setTelephone(request.getParameter("telephone"));
etudiant.setEmail(request.getParameter("email"));
String idetudiant = request.getParameter("idetudiant");
String paramDateNaiss=request.getParameter("datenaiss");
String format="yyyy-MM-dd";
try {
Date datenaiss= new SimpleDateFormat(format).parse(paramDateNaiss);
etudiant.setDatenaiss(datenaiss);
} catch (Exception e) {
throw new IllegalArgumentException("param datenaiss="+paramDateNaiss+" is not a valid '"+format+" ' date", e);

}
if(idetudiant == null || idetudiant.isEmpty())
{
dao.addEtudiant(etudiant);
}
else
{
etudiant.setIdetudiant(Integer.parseInt(idetudiant));
dao.updateEtudiant(etudiant);
}
RequestDispatcher view = request.getRequestDispatcher(LIST_ETUDIANT);
request.setAttribute("etudiants", dao.getAllEtudiant());
view.forward(request, response);
}

et la page jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script language="javascript">
function verif_champ()
{
if(document.frmAddUser.nom.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!");
document.frmAddUser.nom.focus();
return false;
}
if(document.frmAddUser.prenom.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!");
document.frmAddUser.prenom.focus();
return false;
}
if(document.frmAddUser.adresse.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!");
document.frmAddUser.adresse.focus();
return false;
}
if(document.frmAddUser.telephone.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!");
document.frmAddUser.telephone.focus();
return false;
}
if(document.frmAddUser.email.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!")
document.frmAddUser.email.focus();
return false;
}

if(document.frmAddUser.datenaiss.value=="")
{
alert("Le Champ Est Obligatoire Merci !!!")
document.frmAddUser.datenaiss.focus();
return false;
}
}
</script>
<title>Insert title here</title>
</head>
<body>
<form method="POST" action='EtudiantController' name="frmAddUser" onsubmit="return verif_champ()">
<label> Numero Etudiant : </label><input type="text" readonly="readonly" name="idetudiant" disabled="disabled"
<c:out value="${etudiant.idetudiant}" />/> <br />
<label> Nom : </label> <input type="text" name="nom"
<c:out value="${etudiant.nom}" />/> <br />
<label> Prenom : </label> <input type="text" name="prenom"
<c:out value="${etudiant.prenom}" />/> <br />
<label> Adresse : </label> <input type="text" name="adresse"
<c:out value="${etudiant.adresse}" />/> <br />
<label> Telephone : </label> <input type="text" name="telephone"
<c:out value="${etudiant.telephone}" />/> <br />
<label> Email : </label> <input type="text" name="email"
<c:out value="${etudiant.email}" /> /> <br />
<label> Date Naissance : </label> <input type="text" name="datenaiss"
<fmt:formatDate pattern="yyyy-MM-dd" value="${etudiant.datenaiss}" />/> <br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
merci d'avance pour votre disponibilité
0